[PATCH] D130397: [RISCV] Custom type legalize i32 loads by sign extending.

Alex Bradbury via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 2 22:04:10 PDT 2022


asb added a comment.

In D130397#3695322 <https://reviews.llvm.org/D130397#3695322>, @craig.topper wrote:

> Add a small DAGCombiner change that recovers va-arg-24.c I'll write a test
> before I commit this. Wanted to get this out for further evaluation on other
> tests Alex saw.

Comparing old patch vs new patch, the inter-diff shows all positive changes (i.e. no cases where codegen is worse vs the first patch version).

There are still cases where the static instruction count rises, I've pasted in all such cases below:

  diff --git a/output_rv64imafdc_lp64_O0/20140622-1.s b/output_rv64imafdc_lp64_O0/20140622-1.s
  index fb866edf04..6de9373fe4 100644
  --- a/output_rv64imafdc_lp64_O0/20140622-1.s
  +++ b/output_rv64imafdc_lp64_O0/20140622-1.s
  @@ -14,11 +14,13 @@ test:                                   # @test
                                           # kill: def $x11 killed $x10
   	sw	a0, -20(s0)
   	lui	a0, %hi(p)
  -	lwu	a1, %lo(p)(a0)
  +	lw	a1, %lo(p)(a0)
   	lw	a0, -20(s0)
   	addw	a0, a0, a1
   	slli	a0, a0, 32
   	srli	a0, a0, 32
  +	slli	a1, a1, 32
  +	srli	a1, a1, 32
   	sub	a0, a0, a1
   	ld	ra, 24(sp)                      # 8-byte Folded Reload
   	ld	s0, 16(sp)                      # 8-byte Folded Reload
  diff --git a/output_rv64imafdc_lp64_O0/loop-2.s b/output_rv64imafdc_lp64_O0/loop-2.s
  index d1868065b9..8589e2f437 100644
  --- a/output_rv64imafdc_lp64_O0/loop-2.s
  +++ b/output_rv64imafdc_lp64_O0/loop-2.s
  @@ -24,11 +24,12 @@ f:                                      # @f
   	j	.LBB0_2
   .LBB0_2:                                # %for.body
                                           #   in Loop: Header=BB0_1 Depth=1
  -	lwu	a1, -28(s0)
  -	addiw	a0, a1, -2
  -	slli	a2, a1, 2
  +	lw	a2, -28(s0)
  +	addiw	a0, a2, -2
   	lui	a1, %hi(a)
   	addi	a1, a1, %lo(a)
  +	slli	a2, a2, 32
  +	srli	a2, a2, 30
   	add	a1, a1, a2
   	sw	a0, 0(a1)
   	j	.LBB0_3
  diff --git a/output_rv64imafdc_lp64_O0/memcpy-1.s b/output_rv64imafdc_lp64_O0/memcpy-1.s
  index 88ddd9a854..a996ff67b2 100644
  --- a/output_rv64imafdc_lp64_O0/memcpy-1.s
  +++ b/output_rv64imafdc_lp64_O0/memcpy-1.s
  @@ -53,11 +53,13 @@ main:                                   # @main
   	j	.LBB1_2
   .LBB1_2:                                # %for.body
                                           #   in Loop: Header=BB1_1 Depth=1
  -	lwu	a0, -32(s0)
  +	lw	a0, -32(s0)
  +	slli	a1, a0, 32
  +	srli	a2, a1, 32
   	lui	a1, 1048544
   	addiw	a1, a1, -32
   	add	a1, a1, s0
  -	add	a1, a1, a0
  +	add	a1, a1, a2
   	sb	a0, 0(a1)
   	lwu	a1, -32(s0)
   	lui	a0, 1048512
  @@ -93,11 +95,13 @@ main:                                   # @main
   	j	.LBB1_6
   .LBB1_6:                                # %for.body7
                                           #   in Loop: Header=BB1_5 Depth=1
  -	lwu	a1, -32(s0)
  +	lw	a1, -32(s0)
  +	slli	a0, a1, 32
  +	srli	a2, a0, 32
   	lui	a0, 1048512
   	addiw	a0, a0, -32
   	add	a0, a0, s0
  -	add	a0, a0, a1
  +	add	a0, a0, a2
   	lbu	a0, 0(a0)
   	andi	a1, a1, 255
   	beq	a0, a1, .LBB1_8
  @@ -171,11 +175,13 @@ main:                                   # @main
   	j	.LBB1_18
   .LBB1_18:                               # %for.body38
                                           #   in Loop: Header=BB1_17 Depth=1
  -	lwu	a1, -32(s0)
  +	lw	a1, -32(s0)
  +	slli	a0, a1, 32
  +	srli	a2, a0, 32
   	lui	a0, 1048512
   	addiw	a0, a0, -32
   	add	a0, a0, s0
  -	add	a0, a0, a1
  +	add	a0, a0, a2
   	lbu	a0, 0(a0)
   	andi	a1, a1, 255
   	beq	a0, a1, .LBB1_20
  @@ -256,11 +262,13 @@ main:                                   # @main
   	j	.LBB1_30
   .LBB1_30:                               # %for.body71
                                           #   in Loop: Header=BB1_29 Depth=1
  -	lwu	a1, -32(s0)
  +	lw	a1, -32(s0)
  +	slli	a0, a1, 32
  +	srli	a2, a0, 32
   	lui	a0, 1048512
   	addiw	a0, a0, -32
   	add	a0, a0, s0
  -	add	a0, a0, a1
  +	add	a0, a0, a2
   	lbu	a0, 0(a0)
   	andi	a1, a1, 255
   	beq	a0, a1, .LBB1_32
  @@ -323,11 +331,13 @@ main:                                   # @main
   	j	.LBB1_36
   .LBB1_36:                               # %for.body91
                                           #   in Loop: Header=BB1_35 Depth=1
  -	lwu	a1, -32(s0)
  +	lw	a1, -32(s0)
  +	slli	a0, a1, 32
  +	srli	a2, a0, 32
   	lui	a0, 1048512
   	addiw	a0, a0, -32
   	add	a0, a0, s0
  -	add	a0, a0, a1
  +	add	a0, a0, a2
   	lbu	a0, 0(a0)
   	andi	a1, a1, 255
   	beq	a0, a1, .LBB1_38
  diff --git a/output_rv64imafdc_lp64_O0/pr22061-1.s b/output_rv64imafdc_lp64_O0/pr22061-1.s
  index 8afd95f7b7..acaf8a29cd 100644
  --- a/output_rv64imafdc_lp64_O0/pr22061-1.s
  +++ b/output_rv64imafdc_lp64_O0/pr22061-1.s
  @@ -29,9 +29,11 @@ bar:                                    # @bar
   	addi	s0, sp, 32
   	sd	a0, -24(s0)
   	lui	a0, %hi(N)
  -	lwu	a0, %lo(N)(a0)
  +	lw	a0, %lo(N)(a0)
  +	slli	a1, a0, 32
  +	srli	a2, a1, 32
   	ld	a1, -24(s0)
  -	add	a1, a1, a0
  +	add	a1, a1, a2
   	sb	a0, 0(a1)
   	ld	ra, 24(sp)                      # 8-byte Folded Reload
   	ld	s0, 16(sp)                      # 8-byte Folded Reload
  diff --git a/output_rv64imafdc_lp64_O0/pr37573.s b/output_rv64imafdc_lp64_O0/pr37573.s
  index 48df844a59..4c5b46eea9 100644
  --- a/output_rv64imafdc_lp64_O0/pr37573.s
  +++ b/output_rv64imafdc_lp64_O0/pr37573.s
  @@ -88,7 +88,7 @@ bar:                                    # @bar
   	lui	a0, 1048575
   	addiw	a0, a0, 1540
   	add	a0, a0, s0
  -	lwu	a2, 0(a0)
  +	lw	a2, 0(a0)
   	lui	a0, 1048575
   	addiw	a0, a0, 1528
   	add	a0, a0, s0
  @@ -97,14 +97,15 @@ bar:                                    # @bar
   	slli	a0, a0, 32
   	srli	a0, a0, 30
   	add	a0, a0, a1
  -	lwu	a3, 0(a0)
  -	srli	a0, a3, 30
  +	lw	a3, 0(a0)
  +	srliw	a0, a3, 30
   	xor	a0, a0, a3
   	lui	a3, 442489
   	addiw	a3, a3, -1691
   	mulw	a0, a0, a3
   	addw	a0, a0, a2
  -	slli	a2, a2, 2
  +	slli	a2, a2, 32
  +	srli	a2, a2, 30
   	add	a1, a1, a2
   	sw	a0, 0(a1)
   	j	.LBB1_3
  @@ -191,15 +192,16 @@ foo:                                    # @foo
   .LBB2_3:                                # %for.body
                                           #   in Loop: Header=BB2_2 Depth=1
   	ld	a2, -40(s0)
  -	lwu	a3, -44(s0)
  -	slli	a0, a3, 2
  +	lw	a3, -44(s0)
  +	slli	a0, a3, 32
  +	srli	a0, a0, 30
   	add	a1, a2, a0
   	lw	a5, 0(a1)
   	addiw	a0, a3, 1
   	slli	a0, a0, 32
   	srli	a0, a0, 30
   	add	a0, a0, a2
  -	lwu	a4, 0(a0)
  +	lw	a4, 0(a0)
   	xor	a0, a5, a4
   	lui	a6, 524288
   	addiw	a6, a6, -2
  @@ -236,26 +238,26 @@ foo:                                    # @foo
   	sd	a1, 0(a2)
   	lw	a0, 0(a0)
   	sw	a0, -28(s0)
  -	lwu	a0, -28(s0)
  -	srli	a1, a0, 11
  +	lw	a0, -28(s0)
  +	srliw	a1, a0, 11
   	xor	a0, a0, a1
   	sw	a0, -28(s0)
  -	lwu	a0, -28(s0)
  +	lw	a0, -28(s0)
   	lui	a1, 5030
   	addiw	a1, a1, -1875
   	and	a1, a1, a0
   	slli	a1, a1, 7
   	xor	a0, a0, a1
   	sw	a0, -28(s0)
  -	lwu	a0, -28(s0)
  +	lw	a0, -28(s0)
   	lui	a1, 30
   	addiw	a1, a1, -116
   	and	a1, a1, a0
   	slli	a1, a1, 15
   	xor	a0, a0, a1
   	sw	a0, -28(s0)
  -	lwu	a0, -28(s0)
  -	srli	a1, a0, 18
  +	lw	a0, -28(s0)
  +	srliw	a1, a0, 18
   	xor	a0, a0, a1
   	sw	a0, -28(s0)
   	lwu	a0, -28(s0)
  diff --git a/output_rv64imafdc_lp64_O0/pr40493.s b/output_rv64imafdc_lp64_O0/pr40493.s
  index de6fe0e223..29149b1f4e 100644
  --- a/output_rv64imafdc_lp64_O0/pr40493.s
  +++ b/output_rv64imafdc_lp64_O0/pr40493.s
  @@ -52,8 +52,9 @@ main:                                   # @main
   .LBB0_1:                                # %if.then
   	call	abort
   .LBB0_2:                                # %if.end
  -	lhu	a0, -62(s0)
  -	andi	a0, a0, 1
  +	lw	a0, -64(s0)
  +	slli	a0, a0, 47
  +	srli	a0, a0, 63
   	beqz	a0, .LBB0_4
   	j	.LBB0_3
   .LBB0_3:                                # %if.then15
  diff --git a/output_rv64imafdc_lp64_O0/pr51581-2.s b/output_rv64imafdc_lp64_O0/pr51581-2.s
  index 0a104e0d42..29103a43ae 100644
  --- a/output_rv64imafdc_lp64_O0/pr51581-2.s
  +++ b/output_rv64imafdc_lp64_O0/pr51581-2.s
  @@ -83,12 +83,12 @@ f2:                                     # @f2
   	lui	a0, %hi(b)
   	addi	a0, a0, %lo(b)
   	add	a0, a0, a2
  -	lwu	a0, 0(a0)
  -	lui	a1, 171
  -	addiw	a1, a1, -1365
  -	slli	a1, a1, 12
  -	addi	a1, a1, -1365
  -	mul	a1, a0, a1
  +	lw	a0, 0(a0)
  +	slli	a1, a0, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a1, a1, a3
   	srli	a3, a1, 33
   	slliw	a1, a3, 1
   	addw	a1, a1, a3
  @@ -193,10 +193,12 @@ f4:                                     # @f4
   	lui	a0, %hi(b)
   	addi	a0, a0, %lo(b)
   	add	a0, a0, a2
  -	lwu	a0, 0(a0)
  -	lui	a1, 233017
  -	addiw	a1, a1, -455
  -	mul	a1, a0, a1
  +	lw	a0, 0(a0)
  +	slli	a1, a0, 32
  +	lui	a3, 233017
  +	addiw	a3, a3, -455
  +	slli	a3, a3, 32
  +	mulhu	a1, a1, a3
   	srli	a1, a1, 34
   	li	a3, 18
   	mulw	a1, a1, a3
  @@ -301,12 +303,12 @@ f6:                                     # @f6
   	lui	a0, %hi(b)
   	addi	a0, a0, %lo(b)
   	add	a0, a0, a2
  -	lwu	a0, 0(a0)
  -	lui	a1, 175
  -	addiw	a1, a1, 647
  -	slli	a1, a1, 12
  -	addi	a1, a1, -1077
  -	mul	a1, a0, a1
  +	lw	a0, 0(a0)
  +	slli	a1, a0, 32
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a3, a3, 32
  +	mulhu	a1, a1, a3
   	srli	a3, a1, 32
   	subw	a1, a0, a3
   	srliw	a1, a1, 1
  @@ -814,12 +816,12 @@ main:                                   # @main
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 33
   	slliw	a2, a3, 1
   	addw	a2, a2, a3
  @@ -884,10 +886,12 @@ main:                                   # @main
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 233017
  -	addiw	a2, a2, -455
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 233017
  +	addiw	a3, a3, -455
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 34
   	li	a3, 18
   	mulw	a2, a2, a3
  @@ -952,12 +956,12 @@ main:                                   # @main
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 175
  -	addiw	a2, a2, 647
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1077
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 32
   	subw	a2, a1, a3
   	srliw	a2, a2, 1
  @@ -1026,12 +1030,12 @@ main:                                   # @main
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 33
   	slliw	a2, a3, 1
   	addw	a2, a2, a3
  @@ -1096,10 +1100,12 @@ main:                                   # @main
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 233017
  -	addiw	a2, a2, -455
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 233017
  +	addiw	a3, a3, -455
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 34
   	li	a3, 18
   	mulw	a2, a2, a3
  @@ -1164,12 +1170,12 @@ main:                                   # @main
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 175
  -	addiw	a2, a2, 647
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1077
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 32
   	subw	a2, a1, a3
   	srliw	a2, a2, 1
  diff --git a/output_rv64imafdc_lp64_O0/pr53645.s b/output_rv64imafdc_lp64_O0/pr53645.s
  index 9f6f143909..854ac29016 100644
  --- a/output_rv64imafdc_lp64_O0/pr53645.s
  +++ b/output_rv64imafdc_lp64_O0/pr53645.s
  @@ -1372,12 +1372,12 @@ main:                                   # @main
   	lw	a2, -100(s0)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 33
   	slliw	a2, a3, 1
   	addw	a2, a2, a3
  @@ -1392,12 +1392,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 12(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 12(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 33
   	slliw	a2, a3, 1
   	addw	a2, a2, a3
  @@ -1417,12 +1417,12 @@ main:                                   # @main
   	addi	a1, a1, %lo(u)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 8(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 33
   	slliw	a2, a3, 1
   	addw	a2, a2, a3
  @@ -1437,12 +1437,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 4(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 4(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 33
   	slliw	a2, a3, 1
   	addw	a2, a2, a3
  @@ -1552,12 +1552,12 @@ main:                                   # @main
   	lw	a2, -100(s0)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 34
   	li	a3, 6
   	mulw	a2, a2, a3
  @@ -1572,12 +1572,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 12(a1)
  -	lui	a2, 205
  -	addiw	a2, a2, -819
  -	slli	a2, a2, 12
  -	addi	a2, a2, -819
  -	mul	a2, a1, a2
  +	lw	a1, 12(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 838861
  +	addiw	a3, a3, -819
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 34
   	slliw	a2, a3, 2
   	addw	a2, a2, a3
  @@ -1597,12 +1597,12 @@ main:                                   # @main
   	addi	a1, a1, %lo(u)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 8(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 34
   	li	a3, 6
   	mulw	a2, a2, a3
  @@ -1617,12 +1617,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 4(a1)
  -	lui	a2, 205
  -	addiw	a2, a2, -819
  -	slli	a2, a2, 12
  -	addi	a2, a2, -819
  -	mul	a2, a1, a2
  +	lw	a1, 4(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 838861
  +	addiw	a3, a3, -819
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 34
   	slliw	a2, a3, 2
   	addw	a2, a2, a3
  @@ -1732,8 +1732,8 @@ main:                                   # @main
   	lw	a2, -100(s0)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	srli	a2, a1, 1
  +	lw	a1, 0(a1)
  +	srliw	a2, a1, 1
   	lui	a3, 299593
   	slli	a3, a3, 1
   	addi	a3, a3, 1171
  @@ -1752,12 +1752,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 12(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 12(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 34
   	li	a3, 6
   	mulw	a2, a2, a3
  @@ -1777,8 +1777,8 @@ main:                                   # @main
   	addi	a1, a1, %lo(u)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	srli	a2, a1, 1
  +	lw	a1, 8(a1)
  +	srliw	a2, a1, 1
   	lui	a3, 299593
   	slli	a3, a3, 1
   	addi	a3, a3, 1171
  @@ -1797,8 +1797,8 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 4(a1)
  -	srli	a2, a1, 1
  +	lw	a1, 4(a1)
  +	srliw	a2, a1, 1
   	lui	a3, 299593
   	slli	a3, a3, 1
   	addi	a3, a3, 1171
  @@ -1828,10 +1828,12 @@ main:                                   # @main
   	lw	a2, -100(s0)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 32
   	subw	a1, a1, a2
   	srliw	a1, a1, 1
  @@ -1847,10 +1849,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 12(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 12(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 32
   	subw	a1, a1, a2
   	srliw	a1, a1, 1
  @@ -1871,10 +1875,12 @@ main:                                   # @main
   	addi	a1, a1, %lo(u)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 8(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 32
   	subw	a1, a1, a2
   	srliw	a1, a1, 1
  @@ -1890,10 +1896,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 4(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 4(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 32
   	subw	a1, a1, a2
   	srliw	a1, a1, 1
  @@ -1920,10 +1928,12 @@ main:                                   # @main
   	lw	a2, -100(s0)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 32
   	subw	a2, a1, a3
   	srliw	a2, a2, 1
  @@ -1942,10 +1952,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 12(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 12(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 32
   	subw	a2, a1, a3
   	srliw	a2, a2, 1
  @@ -1969,10 +1981,12 @@ main:                                   # @main
   	addi	a1, a1, %lo(u)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 8(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 32
   	subw	a2, a1, a3
   	srliw	a2, a2, 1
  @@ -1991,10 +2005,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 4(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 4(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 32
   	subw	a2, a1, a3
   	srliw	a2, a2, 1
  @@ -2231,8 +2247,8 @@ main:                                   # @main
   	addi	a1, a1, %lo(s)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	srli	a2, a1, 31
  +	lw	a1, 8(a1)
  +	srliw	a2, a1, 31
   	addw	a1, a1, a2
   	sraiw	a1, a1, 1
   	bne	a0, a1, .LBB24_95
  @@ -2297,8 +2313,8 @@ main:                                   # @main
   	addi	a1, a1, %lo(s)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	srli	a2, a1, 31
  +	lw	a1, 8(a1)
  +	srliw	a2, a1, 31
   	add	a2, a2, a1
   	andi	a2, a2, -2
   	subw	a1, a1, a2
  diff --git a/output_rv64imafdc_lp64_O0/pr65401.s b/output_rv64imafdc_lp64_O0/pr65401.s
  index 0d1ed420e0..2a3022dd2a 100644
  --- a/output_rv64imafdc_lp64_O0/pr65401.s
  +++ b/output_rv64imafdc_lp64_O0/pr65401.s
  @@ -26,13 +26,13 @@ foo:                                    # @foo
   .LBB0_2:                                # %for.body
                                           #   in Loop: Header=BB0_1 Depth=1
   	ld	a1, -40(s0)
  -	lwu	a0, -28(s0)
  -	slli	a2, a0, 1
  -	slli	a0, a2, 32
  +	lw	a2, -28(s0)
  +	slli	a3, a2, 1
  +	slli	a0, a3, 32
   	srli	a0, a0, 32
   	add	a0, a0, a1
   	lbu	a0, 0(a0)
  -	ori	a3, a2, 1
  +	ori	a3, a3, 1
   	slli	a3, a3, 32
   	srli	a3, a3, 32
   	add	a1, a1, a3
  @@ -40,6 +40,8 @@ foo:                                    # @foo
   	slli	a1, a1, 8
   	or	a0, a0, a1
   	ld	a1, -24(s0)
  +	slli	a2, a2, 32
  +	srli	a2, a2, 31
   	add	a1, a1, a2
   	sh	a0, 0(a1)
   	j	.LBB0_3
  @@ -81,20 +83,22 @@ bar:                                    # @bar
   .LBB1_2:                                # %for.body
                                           #   in Loop: Header=BB1_1 Depth=1
   	ld	a1, -40(s0)
  -	lwu	a0, -28(s0)
  -	slli	a2, a0, 1
  -	slli	a0, a2, 32
  +	lw	a2, -28(s0)
  +	slli	a3, a2, 1
  +	slli	a0, a3, 32
   	srli	a0, a0, 32
   	add	a0, a0, a1
   	lb	a0, 0(a0)
   	slli	a0, a0, 8
  -	ori	a3, a2, 1
  +	ori	a3, a3, 1
   	slli	a3, a3, 32
   	srli	a3, a3, 32
   	add	a1, a1, a3
   	lbu	a1, 0(a1)
   	or	a0, a0, a1
   	ld	a1, -24(s0)
  +	slli	a2, a2, 32
  +	srli	a2, a2, 31
   	add	a1, a1, a2
   	sh	a0, 0(a1)
   	j	.LBB1_3
  @@ -133,12 +137,13 @@ main:                                   # @main
   	j	.LBB2_2
   .LBB2_2:                                # %for.body
                                           #   in Loop: Header=BB2_1 Depth=1
  -	lwu	a1, -24(s0)
  +	lw	a1, -24(s0)
   	li	a0, 64
   	subw	a0, a0, a1
   	slliw	a0, a0, 8
   	addw	a0, a0, a1
  -	slli	a2, a1, 1
  +	slli	a1, a1, 32
  +	srli	a2, a1, 31
   	addi	a1, s0, -152
   	add	a1, a1, a2
   	sh	a0, 0(a1)
  @@ -163,8 +168,9 @@ main:                                   # @main
   	j	.LBB2_6
   .LBB2_6:                                # %for.body5
                                           #   in Loop: Header=BB2_5 Depth=1
  -	lwu	a1, -24(s0)
  -	slli	a2, a1, 1
  +	lw	a1, -24(s0)
  +	slli	a0, a1, 32
  +	srli	a2, a0, 31
   	addi	a0, s0, -152
   	add	a0, a0, a2
   	lhu	a0, 0(a0)
  @@ -197,12 +203,13 @@ main:                                   # @main
   	j	.LBB2_12
   .LBB2_12:                               # %for.body21
                                           #   in Loop: Header=BB2_11 Depth=1
  -	lwu	a1, -24(s0)
  +	lw	a1, -24(s0)
   	li	a0, 64
   	subw	a0, a0, a1
   	slliw	a0, a0, 8
   	addw	a0, a0, a1
  -	slli	a2, a1, 1
  +	slli	a1, a1, 32
  +	srli	a2, a1, 31
   	addi	a1, s0, -152
   	add	a1, a1, a2
   	sh	a0, 0(a1)
  @@ -227,8 +234,9 @@ main:                                   # @main
   	j	.LBB2_16
   .LBB2_16:                               # %for.body35
                                           #   in Loop: Header=BB2_15 Depth=1
  -	lwu	a2, -24(s0)
  -	slli	a1, a2, 1
  +	lw	a2, -24(s0)
  +	slli	a0, a2, 32
  +	srli	a1, a0, 31
   	addi	a0, s0, -152
   	add	a0, a0, a1
   	lhu	a0, 0(a0)
  diff --git a/output_rv64imafdc_lp64_O0/pr71700.s b/output_rv64imafdc_lp64_O0/pr71700.s
  index 5d1085197a..4170fb8ae7 100644
  --- a/output_rv64imafdc_lp64_O0/pr71700.s
  +++ b/output_rv64imafdc_lp64_O0/pr71700.s
  @@ -19,8 +19,9 @@ main:                                   # @main
   	lui	a0, %hi(d)
   	lw	a1, -24(s0)
   	sw	a1, %lo(d)(a0)
  -	lhu	a0, %lo(d+2)(a0)
  -	andi	a0, a0, 1
  +	lw	a0, %lo(d)(a0)
  +	slli	a0, a0, 47
  +	srli	a0, a0, 63
   	beqz	a0, .LBB0_2
   	j	.LBB0_1
   .LBB0_1:                                # %if.then
  diff --git a/output_rv64imafdc_lp64_O0/pr79388.s b/output_rv64imafdc_lp64_O0/pr79388.s
  index cb855e742b..71fde755e4 100644
  --- a/output_rv64imafdc_lp64_O0/pr79388.s
  +++ b/output_rv64imafdc_lp64_O0/pr79388.s
  @@ -21,11 +21,12 @@ foo:                                    # @foo
   	addiw	a1, a1, -2
   	and	a0, a0, a1
   	sw	a0, -20(s0)
  -	lwu	a0, -20(s0)
  -	lui	a1, 65537
  -	slli	a1, a1, 3
  -	addi	a1, a1, 1
  -	mul	a1, a0, a1
  +	lw	a0, -20(s0)
  +	lui	a1, 524296
  +	addiw	a1, a1, 1
  +	slli	a2, a1, 32
  +	slli	a1, a0, 32
  +	mulhu	a1, a1, a2
   	srli	a1, a1, 47
   	slliw	a2, a1, 16
   	subw	a1, a1, a2
  diff --git a/output_rv64imafdc_lp64_O0/pr83362.s b/output_rv64imafdc_lp64_O0/pr83362.s
  index c9bbdd6955..a1579787be 100644
  --- a/output_rv64imafdc_lp64_O0/pr83362.s
  +++ b/output_rv64imafdc_lp64_O0/pr83362.s
  @@ -45,10 +45,12 @@ foo:                                    # @foo
   .LBB1_1:                                # %do.body
                                           # =>This Inner Loop Header: Depth=1
   	lui	a1, %hi(e)
  -	lwu	a0, %lo(e)(a1)
  +	lw	a0, %lo(e)(a1)
   	lui	a2, 256
   	addiw	a2, a2, 257
  -	mul	a2, a0, a2
  +	slli	a3, a2, 32
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  diff --git a/output_rv64imafdc_lp64_O1/20140622-1.s b/output_rv64imafdc_lp64_O1/20140622-1.s
  index e33cce6bdf..6d20c13a92 100644
  --- a/output_rv64imafdc_lp64_O1/20140622-1.s
  +++ b/output_rv64imafdc_lp64_O1/20140622-1.s
  @@ -8,10 +8,12 @@
   test:                                   # @test
   # %bb.0:                                # %entry
   	lui	a1, %hi(p)
  -	lwu	a1, %lo(p)(a1)
  +	lw	a1, %lo(p)(a1)
   	addw	a0, a0, a1
   	slli	a0, a0, 32
   	srli	a0, a0, 32
  +	slli	a1, a1, 32
  +	srli	a1, a1, 32
   	sub	a0, a0, a1
   	ret
   .Lfunc_end0:
  diff --git a/output_rv64imafdc_lp64_O1/pr22061-1.s b/output_rv64imafdc_lp64_O1/pr22061-1.s
  index 3d538d6ad9..461d597641 100644
  --- a/output_rv64imafdc_lp64_O1/pr22061-1.s
  +++ b/output_rv64imafdc_lp64_O1/pr22061-1.s
  @@ -17,8 +17,10 @@ foo:                                    # @foo
   bar:                                    # @bar
   # %bb.0:                                # %entry
   	lui	a1, %hi(N)
  -	lwu	a1, %lo(N)(a1)
  -	add	a0, a0, a1
  +	lw	a1, %lo(N)(a1)
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	add	a0, a0, a2
   	sb	a1, 0(a0)
   	ret
   .Lfunc_end1:
  diff --git a/output_rv64imafdc_lp64_O1/pr23135.s b/output_rv64imafdc_lp64_O1/pr23135.s
  index 9d13784c07..8167879d43 100644
  --- a/output_rv64imafdc_lp64_O1/pr23135.s
  +++ b/output_rv64imafdc_lp64_O1/pr23135.s
  @@ -33,164 +33,179 @@ main:                                   # @main
   	sd	s3, 24(sp)                      # 8-byte Folded Spill
   	sd	s4, 16(sp)                      # 8-byte Folded Spill
   	sd	s5, 8(sp)                       # 8-byte Folded Spill
  +	sd	s6, 0(sp)                       # 8-byte Folded Spill
   	lui	a0, %hi(i)
   	lw	a4, %lo(i)(a0)
   	lw	a5, %lo(i+4)(a0)
   	lui	a0, %hi(j)
  -	lw	a2, %lo(j)(a0)
  -	lw	a3, %lo(j+4)(a0)
  -	add	a1, a2, a4
  -	add	s1, a3, a5
  -	lui	a0, %hi(res)
  -	sw	s1, %lo(res+4)(a0)
  -	xori	s0, a1, 160
  -	xori	s1, s1, 113
  -	or	s1, s1, s0
  -	sext.w	s1, s1
  -	sw	a1, %lo(res)(a0)
  -	bnez	s1, .LBB1_12
  +	lw	s0, %lo(j+4)(a0)
  +	lw	s1, %lo(j)(a0)
  +	addw	a1, s0, a5
  +	addw	s4, s1, a4
  +	lui	a2, %hi(res)
  +	sw	s4, %lo(res)(a2)
  +	sw	a1, %lo(res+4)(a2)
  +	lw	a3, %lo(res)(a2)
  +	lw	a0, %lo(res+4)(a2)
  +	xori	a3, a3, 160
  +	xori	a0, a0, 113
  +	or	a0, a0, a3
  +	bnez	a0, .LBB1_12
   # %bb.1:                                # %verify.exit
  -	mul	a1, a3, a5
  -	mul	s1, a2, a4
  -	sw	s1, %lo(res)(a0)
  -	xori	s1, s1, 1500
  -	xori	s0, a1, 1300
  -	or	s1, s1, s0
  -	sext.w	s1, s1
  -	sw	a1, %lo(res+4)(a0)
  -	bnez	s1, .LBB1_12
  +	mulw	s5, s0, a5
  +	mulw	s3, s1, a4
  +	sw	s3, %lo(res)(a2)
  +	sw	s5, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a2, %lo(res+4)(a2)
  +	xori	a0, a0, 1500
  +	xori	a2, a2, 1300
  +	or	a0, a0, a2
  +	bnez	a0, .LBB1_12
   # %bb.2:                                # %verify.exit27
  -	divw	s3, a5, a3
  -	divw	a1, a4, a2
  -	lui	s1, %hi(res)
  -	sw	a1, %lo(res)(s1)
  -	xori	s0, a1, 15
  -	xori	a0, s3, 7
  -	or	a0, a0, s0
  -	sw	s3, %lo(res+4)(s1)
  +	divw	t2, a5, s0
  +	divw	t3, a4, s1
  +	lui	a2, %hi(res)
  +	sw	t3, %lo(res)(a2)
  +	sw	t2, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a3, %lo(res+4)(a2)
  +	xori	a0, a0, 15
  +	xori	a3, a3, 7
  +	or	a0, a0, a3
   	bnez	a0, .LBB1_12
   # %bb.3:                                # %verify.exit32
  -	and	t3, a3, a5
  -	and	t2, a2, a4
  -	xori	a0, t2, 2
  -	xori	s0, t3, 4
  -	or	a0, a0, s0
  -	sw	t2, %lo(res)(s1)
  -	sw	t3, %lo(res+4)(s1)
  +	and	a7, s0, a5
  +	and	a6, s1, a4
  +	sw	a6, %lo(res)(a2)
  +	sw	a7, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a2, %lo(res+4)(a2)
  +	xori	a0, a0, 2
  +	xori	a2, a2, 4
  +	or	a0, a0, a2
   	bnez	a0, .LBB1_12
   # %bb.4:                                # %verify.exit37
  -	or	a6, a3, a5
  -	or	a7, a2, a4
  -	lui	s1, %hi(res)
  -	sw	a7, %lo(res)(s1)
  -	xori	a0, a7, 158
  -	xori	s0, a6, 109
  -	or	a0, a0, s0
  -	sw	a6, %lo(res+4)(s1)
  +	or	t0, s0, a5
  +	or	t1, s1, a4
  +	lui	a2, %hi(res)
  +	sw	t1, %lo(res)(a2)
  +	sw	t0, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a3, %lo(res+4)(a2)
  +	xori	a0, a0, 158
  +	xori	a3, a3, 109
  +	or	a0, a0, a3
   	bnez	a0, .LBB1_12
   # %bb.5:                                # %verify.exit42
  -	xor	t1, a3, a5
  -	xor	t0, a2, a4
  -	xori	a0, t0, 156
  -	xori	s0, t1, 105
  -	or	a0, a0, s0
  -	sw	t0, %lo(res)(s1)
  -	sw	t1, %lo(res+4)(s1)
  +	xor	t5, s0, a5
  +	xor	t4, s1, a4
  +	sw	t4, %lo(res)(a2)
  +	sw	t5, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a2, %lo(res+4)(a2)
  +	xori	a0, a0, 156
  +	xori	a2, a2, 105
  +	or	a0, a0, a2
   	bnez	a0, .LBB1_12
   # %bb.6:                                # %verify.exit47
  -	negw	t4, a5
  -	negw	t5, a4
  -	lui	s1, %hi(res)
  -	sw	t5, %lo(res)(s1)
  -	xori	a0, t5, -150
  -	xori	s0, t4, -100
  -	or	a0, a0, s0
  -	sw	t4, %lo(res+4)(s1)
  +	negw	t6, a5
  +	negw	s0, a4
  +	lui	a2, %hi(res)
  +	sw	s0, %lo(res)(a2)
  +	sw	t6, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a3, %lo(res+4)(a2)
  +	xori	a0, a0, -150
  +	xori	a3, a3, -100
  +	or	a0, a0, a3
   	bnez	a0, .LBB1_12
   # %bb.7:                                # %verify.exit52
  -	not	t6, a5
  -	xori	a0, a4, 150
  -	xori	s0, a5, 100
  -	or	a0, a0, s0
  -	not	s0, a4
  -	sw	s0, %lo(res)(s1)
  -	sw	t6, %lo(res+4)(s1)
  +	not	s2, a5
  +	not	s1, a4
  +	sw	s1, %lo(res)(a2)
  +	sw	s2, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a2, %lo(res+4)(a2)
  +	xori	a0, a0, -151
  +	xori	a2, a2, -101
  +	or	a0, a0, a2
   	bnez	a0, .LBB1_12
   # %bb.8:                                # %verify.exit57
  -	addw	s2, a3, a5
  -	addw	s4, a2, a4
  -	mulw	s5, a2, a4
  -	mulw	a3, a3, a5
  -	subw	a0, s0, a4
  -	subw	a4, t6, a5
  -	add	a4, a4, a3
  -	add	a0, a0, s5
  -	add	a0, a0, s4
  -	add	a4, a4, s2
  -	add	a4, a4, t3
  -	add	a0, a0, t2
  -	add	a0, a0, a7
  -	add	a4, a4, a6
  -	add	s1, a4, t1
  -	add	a0, a0, t0
  -	lui	a5, %hi(k)
  -	sw	a0, %lo(k)(a5)
  -	lui	a4, %hi(res)
  -	sw	a0, %lo(res)(a4)
  -	xori	a0, a0, 1675
  -	xori	a2, s1, 1430
  -	or	a0, a0, a2
  -	sw	s1, %lo(k+4)(a5)
  -	sext.w	a0, a0
  -	sw	s1, %lo(res+4)(a4)
  +	subw	a0, s1, a4
  +	subw	a2, s2, a5
  +	addw	a2, a2, s5
  +	addw	a0, a0, s3
  +	addw	a0, a0, s4
  +	addw	a2, a2, a1
  +	addw	a2, a2, a7
  +	addw	a0, a0, a6
  +	addw	a0, a0, t1
  +	addw	a2, a2, t0
  +	addw	a2, a2, t5
  +	addw	a0, a0, t4
  +	lui	a5, %hi(res)
  +	sw	a0, %lo(res)(a5)
  +	sw	a2, %lo(res+4)(a5)
  +	lw	a3, %lo(res)(a5)
  +	lw	a4, %lo(res+4)(a5)
  +	lui	s6, %hi(k)
  +	sw	a0, %lo(k)(s6)
  +	xori	a0, a3, 1675
  +	xori	a3, a4, 1430
  +	or	a0, a0, a3
  +	sw	a2, %lo(k+4)(s6)
   	bnez	a0, .LBB1_12
   # %bb.9:                                # %verify.exit62
  -	mulw	a0, s0, t5
  -	mulw	a2, t6, t4
  -	mul	a2, a2, a3
  -	mul	a0, a0, s5
  -	mul	a0, a0, s4
  -	mul	a2, a2, s2
  -	mul	a2, a2, t3
  -	mul	a0, a0, t2
  -	mul	a0, a0, a7
  -	mul	a2, a2, a6
  -	mul	a2, a2, t1
  -	mul	a0, a0, t0
  -	sw	a0, %lo(k)(a5)
  -	sw	a2, %lo(k+4)(a5)
  -	sw	a0, %lo(res)(a4)
  -	lui	a5, 355583
  -	xor	a0, a0, a5
  -	lui	a5, 662935
  -	addiw	a5, a5, -704
  -	xor	a5, a5, a2
  -	or	a0, a0, a5
  -	sext.w	a0, a0
  -	sw	a2, %lo(res+4)(a4)
  +	mulw	a0, s1, s0
  +	mulw	a2, s2, t6
  +	mulw	a2, a2, s5
  +	mulw	a0, a0, s3
  +	mulw	a0, a0, s4
  +	mulw	a2, a2, a1
  +	mulw	a2, a2, a7
  +	mulw	a0, a0, a6
  +	mulw	a0, a0, t1
  +	mulw	a2, a2, t0
  +	mulw	a2, a2, t5
  +	mulw	a0, a0, t4
  +	sw	a0, %lo(k)(s6)
  +	sw	a0, %lo(res)(a5)
  +	lw	a0, %lo(res)(a5)
  +	sw	a2, %lo(res+4)(a5)
  +	lw	a3, %lo(res+4)(a5)
  +	lui	a4, 355583
  +	xor	a0, a0, a4
  +	lui	a4, 662935
  +	addiw	a4, a4, -704
  +	xor	a3, a3, a4
  +	or	a0, a0, a3
  +	sw	a2, %lo(k+4)(s6)
   	bnez	a0, .LBB1_12
   # %bb.10:                               # %verify.exit67
  -	divw	a0, s2, a3
  -	divw	a2, s4, s5
  -	divw	a1, a2, a1
  -	divw	a0, a0, s3
  -	divw	a0, a0, t3
  -	divw	a1, a1, t2
  -	divw	a1, a1, a7
  -	divw	a0, a0, a6
  -	divw	a0, a0, t1
  -	divw	a1, a1, t0
  -	divw	a1, a1, t5
  -	divw	a0, a0, t4
  -	divw	a0, a0, t6
  +	divw	a0, a1, s5
  +	divw	a1, s4, s3
  +	divw	a1, a1, t3
  +	divw	a0, a0, t2
  +	divw	a0, a0, a7
  +	divw	a1, a1, a6
  +	divw	a1, a1, t1
  +	divw	a0, a0, t0
  +	divw	a0, a0, t5
  +	divw	a1, a1, t4
   	divw	a1, a1, s0
  -	lui	a2, %hi(k)
  -	sw	a1, %lo(k)(a2)
  -	sw	a0, %lo(k+4)(a2)
  +	divw	a0, a0, t6
  +	divw	a0, a0, s2
  +	divw	a1, a1, s1
   	lui	a2, %hi(res)
   	sw	a1, %lo(res)(a2)
  -	or	a1, a1, a0
   	sw	a0, %lo(res+4)(a2)
  +	lw	a3, %lo(res)(a2)
  +	lw	a2, %lo(res+4)(a2)
  +	lui	a4, %hi(k)
  +	sw	a1, %lo(k)(a4)
  +	or	a1, a2, a3
  +	sw	a0, %lo(k+4)(a4)
   	bnez	a1, .LBB1_12
   # %bb.11:                               # %verify.exit72
   	li	a0, 0
  diff --git a/output_rv64imafdc_lp64_O1/pr51581-2.s b/output_rv64imafdc_lp64_O1/pr51581-2.s
  index 7ce56aa11e..40ee3b4359 100644
  --- a/output_rv64imafdc_lp64_O1/pr51581-2.s
  +++ b/output_rv64imafdc_lp64_O1/pr51581-2.s
  @@ -44,14 +44,14 @@ f2:                                     # @f2
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB1_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -110,11 +110,13 @@ f4:                                     # @f4
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, 18
   .LBB3_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	subw	a4, a5, a4
  @@ -170,15 +172,15 @@ f6:                                     # @f6
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, 19
   .LBB5_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -210,11 +212,10 @@ f7:                                     # @f7
   	addiw	a6, a3, 1366
   .LBB6_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	sext.w	a5, a4
  -	mul	a5, a5, a6
  +	lw	a4, 0(a1)
  +	mul	a5, a4, a6
   	srli	a5, a5, 32
  -	srli	a3, a4, 31
  +	srliw	a3, a4, 31
   	addw	a3, a3, a5
   	slliw	a5, a3, 1
   	addw	a3, a3, a5
  @@ -239,14 +240,14 @@ f8:                                     # @f8
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB7_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -276,11 +277,10 @@ f9:                                     # @f9
   	li	a6, -18
   .LBB8_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 34
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -306,11 +306,13 @@ f10:                                    # @f10
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, -18
   .LBB9_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	addw	a4, a4, a5
  @@ -339,11 +341,10 @@ f11:                                    # @f11
   	li	a6, -19
   .LBB10_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 35
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -367,15 +368,15 @@ f12:                                    # @f12
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, -19
   .LBB11_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -444,10 +445,9 @@ main:                                   # @main
   	lui	a2, 1
   	lui	a3, 349525
   	addiw	a6, a3, 1366
  -	lui	a4, 171
  +	lui	a4, 699051
   	addiw	a4, a4, -1365
  -	slli	a4, a4, 12
  -	addi	a7, a4, -1365
  +	slli	a7, a4, 32
   .LBB12_3:                               # %for.body5
                                           # =>This Inner Loop Header: Depth=1
   	lw	a5, 0(s0)
  @@ -462,9 +462,10 @@ main:                                   # @main
   	bne	t0, a3, .LBB12_27
   # %bb.4:                                # %lor.lhs.false
                                           #   in Loop: Header=BB12_3 Depth=1
  -	lwu	a3, 0(s1)
  +	lw	a3, 0(s1)
   	lw	t0, 0(a0)
  -	mul	a5, a3, a7
  +	slli	a5, a3, 32
  +	mulhu	a5, a5, a7
   	srli	a5, a5, 33
   	slliw	a4, a5, 1
   	addw	a4, a4, a5
  @@ -491,24 +492,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_7:                               # %for.body22
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.8:                                # %lor.lhs.false29
                                           #   in Loop: Header=BB12_7 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -536,10 +539,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_11:                              # %for.body43
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -553,9 +555,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.12:                               # %lor.lhs.false50
                                           #   in Loop: Header=BB12_11 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  @@ -586,10 +589,9 @@ main:                                   # @main
   	lui	a4, 1
   	lui	a5, 349525
   	addiw	a6, a5, 1366
  -	lui	s1, 171
  +	lui	s1, 699051
   	addiw	s1, s1, -1365
  -	slli	s1, s1, 12
  -	addi	a7, s1, -1365
  +	slli	a7, s1, 32
   .LBB12_15:                              # %for.body64
                                           # =>This Inner Loop Header: Depth=1
   	lw	s0, 0(a2)
  @@ -604,9 +606,10 @@ main:                                   # @main
   	bne	t0, a5, .LBB12_27
   # %bb.16:                               # %lor.lhs.false71
                                           #   in Loop: Header=BB12_15 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t0, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 33
   	slliw	s1, s0, 1
   	addw	s1, s1, s0
  @@ -633,24 +636,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_19:                              # %for.body85
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.20:                               # %lor.lhs.false92
                                           #   in Loop: Header=BB12_19 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -678,10 +683,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_23:                              # %for.body106
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -695,9 +699,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.24:                               # %lor.lhs.false113
                                           #   in Loop: Header=BB12_23 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  diff --git a/output_rv64imafdc_lp64_O1/pr53645.s b/output_rv64imafdc_lp64_O1/pr53645.s
  index 9bc27bccb5..8fbf5b1879 100644
  --- a/output_rv64imafdc_lp64_O1/pr53645.s
  +++ b/output_rv64imafdc_lp64_O1/pr53645.s
  @@ -188,7 +188,7 @@ sq1428:                                 # @sq1428
   sr1428:                                 # @sr1428
   # %bb.0:                                # %entry
   	lw	a2, 4(a1)
  -	lwu	a3, 8(a1)
  +	lw	a3, 8(a1)
   	lw	a1, 12(a1)
   	slli	a4, a2, 1
   	srli	a4, a4, 62
  @@ -200,7 +200,7 @@ sr1428:                                 # @sr1428
   	add	a4, a4, a1
   	andi	a4, a4, -8
   	subw	a1, a1, a4
  -	srli	a4, a3, 31
  +	srliw	a4, a3, 31
   	add	a4, a4, a3
   	andi	a4, a4, -2
   	subw	a3, a3, a4
  @@ -254,36 +254,44 @@ uq3333:                                 # @uq3333
   	.type	ur3333, at function
   ur3333:                                 # @ur3333
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI9_0)
  -	ld	a3, %lo(.LCPI9_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	srli	a7, a4, 1
  -	andi	a4, a4, -2
  -	addw	a4, a4, a7
  -	subw	a7, a2, a4
  -	mulhu	a4, a1, a3
  -	srli	a2, a4, 1
  -	andi	a4, a4, -2
  -	addw	a2, a2, a4
  -	subw	a1, a1, a2
  -	mulhu	a2, a5, a3
  -	srli	a4, a2, 1
  -	andi	a2, a2, -2
  -	addw	a2, a2, a4
  -	subw	a2, a5, a2
  -	mulhu	a3, a6, a3
  +	lw	t0, 12(a1)
  +	lw	t1, 8(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 4(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 0(a1)
  +	lui	a2, %hi(.LCPI9_0)
  +	ld	a2, %lo(.LCPI9_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 1
   	andi	a3, a3, -2
   	addw	a3, a3, a4
  -	subw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a2, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a7, 0(a0)
  +	subw	a1, a1, a3
  +	mulhu	a3, t2, a2
  +	srli	a4, a3, 1
  +	andi	a3, a3, -2
  +	addw	a3, a3, a4
  +	subw	a3, a5, a3
  +	mulhu	a4, a7, a2
  +	srli	a5, a4, 1
  +	andi	a4, a4, -2
  +	addw	a4, a4, a5
  +	subw	a4, t1, a4
  +	mulhu	a2, a6, a2
  +	srli	a5, a2, 1
  +	andi	a2, a2, -2
  +	addw	a2, a2, a5
  +	subw	a2, t0, a2
  +	sw	a2, 12(a0)
  +	sw	a4, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end9:
   	.size	ur3333, .Lfunc_end9-ur3333
  @@ -420,36 +428,44 @@ uq6565:                                 # @uq6565
   	.type	ur6565, at function
   ur6565:                                 # @ur6565
   # %bb.0:                                # %entry
  -	lwu	a2, 4(a1)
  -	lui	a3, %hi(.LCPI13_0)
  -	ld	a3, %lo(.LCPI13_0)(a3)
  -	lwu	a6, 8(a1)
  -	lwu	a7, 0(a1)
  -	lwu	a1, 12(a1)
  -	mulhu	a4, a2, a3
  -	srli	a5, a4, 2
  -	andi	a4, a4, -4
  -	addw	a4, a4, a5
  -	subw	a2, a2, a4
  -	mulhu	a3, a1, a3
  +	lw	t0, 8(a1)
  +	lw	t1, 0(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 12(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 4(a1)
  +	lui	a2, %hi(.LCPI13_0)
  +	ld	a2, %lo(.LCPI13_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 2
  -	lui	a5, %hi(.LCPI13_1)
  -	ld	a5, %lo(.LCPI13_1)(a5)
   	andi	a3, a3, -4
   	addw	a3, a3, a4
   	subw	a1, a1, a3
  -	mulhu	a3, a7, a5
  +	mulhu	a2, t2, a2
  +	srli	a3, a2, 2
  +	lui	a4, %hi(.LCPI13_1)
  +	ld	a4, %lo(.LCPI13_1)(a4)
  +	andi	a2, a2, -4
  +	addw	a2, a2, a3
  +	subw	a2, a5, a2
  +	mulhu	a3, a7, a4
   	srli	a3, a3, 2
  -	li	a4, 6
  -	mulw	a3, a3, a4
  -	subw	a3, a7, a3
  -	mulhu	a5, a6, a5
  -	srli	a5, a5, 2
  -	mulw	a4, a5, a4
  -	subw	a4, a6, a4
  -	sw	a1, 12(a0)
  +	li	a5, 6
  +	mulw	a3, a3, a5
  +	subw	a3, t1, a3
  +	mulhu	a4, a6, a4
  +	srli	a4, a4, 2
  +	mulw	a4, a4, a5
  +	subw	a4, t0, a4
  +	sw	a2, 12(a0)
   	sw	a4, 8(a0)
  -	sw	a2, 4(a0)
  +	sw	a1, 4(a0)
   	sw	a3, 0(a0)
   	ret
   .Lfunc_end13:
  @@ -592,48 +608,50 @@ uq1414146:                              # @uq1414146
   	.section	.sdata,"aw", at progbits
   	.p2align	3                               # -- Begin function ur1414146
   .LCPI17_0:
  -	.quad	5270498306774157605             # 0x4924924924924925
  -.LCPI17_1:
   	.quad	-6148914691236517205            # 0xaaaaaaaaaaaaaaab
  +.LCPI17_1:
  +	.quad	5270498306774157605             # 0x4924924924924925
   	.text
   	.globl	ur1414146
   	.p2align	1
   	.type	ur1414146, at function
   ur1414146:                              # @ur1414146
   # %bb.0:                                # %entry
  -	lwu	a6, 12(a1)
  -	lwu	a3, 0(a1)
  -	lui	a4, %hi(.LCPI17_0)
  -	ld	a4, %lo(.LCPI17_0)(a4)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	srli	a2, a3, 1
  -	mulhu	a2, a2, a4
  -	srli	a2, a2, 1
  -	li	a7, 14
  +	lw	a6, 8(a1)
  +	lw	a3, 4(a1)
  +	lw	a4, 12(a1)
  +	lui	a5, %hi(.LCPI17_0)
  +	ld	a5, %lo(.LCPI17_0)(a5)
  +	lw	a1, 0(a1)
  +	slli	a2, a4, 32
  +	srli	a2, a2, 32
  +	mulhu	a2, a2, a5
  +	srli	a2, a2, 2
  +	li	a7, 6
  +	lui	a5, %hi(.LCPI17_1)
  +	ld	a5, %lo(.LCPI17_1)(a5)
   	mulw	a2, a2, a7
  -	subw	a2, a3, a2
  -	srli	a3, a1, 1
  -	mulhu	a3, a3, a4
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a1, a1, a3
  -	srli	a3, a5, 1
  -	mulhu	a3, a3, a4
  -	lui	a4, %hi(.LCPI17_1)
  -	ld	a4, %lo(.LCPI17_1)(a4)
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a3, a5, a3
  -	mulhu	a4, a6, a4
  -	srli	a4, a4, 2
  -	li	a5, 6
  -	mulw	a4, a4, a5
  -	subw	a4, a6, a4
  -	sw	a4, 12(a0)
  -	sw	a3, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	subw	a7, a4, a2
  +	srliw	a4, a1, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	li	a2, 14
  +	mulw	a4, a4, a2
  +	subw	a1, a1, a4
  +	srliw	a4, a3, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a4, a4, a2
  +	subw	a3, a3, a4
  +	srliw	a4, a6, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a2, a4, a2
  +	subw	a2, a6, a2
  +	sw	a2, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
  +	sw	a7, 12(a0)
   	ret
   .Lfunc_end17:
   	.size	ur1414146, .Lfunc_end17-ur1414146
  @@ -788,48 +806,56 @@ uq7777:                                 # @uq7777
   	.type	ur7777, at function
   ur7777:                                 # @ur7777
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI21_0)
  -	ld	a3, %lo(.LCPI21_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a7, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	sub	a5, a2, a4
  -	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a2, a2, a4
  -	mulhu	a4, a1, a3
  -	sub	a5, a1, a4
  +	lw	a6, 12(a1)
  +	lw	a7, 8(a1)
  +	slli	a4, a6, 32
  +	lw	t2, 4(a1)
  +	srli	t0, a4, 32
  +	slli	a2, a7, 32
  +	srli	t1, a2, 32
  +	slli	a3, t2, 32
  +	lw	a1, 0(a1)
  +	lui	a4, %hi(.LCPI21_0)
  +	ld	a4, %lo(.LCPI21_0)(a4)
  +	srli	a3, a3, 32
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	mulhu	a5, a2, a4
  +	sub	a2, a2, a5
  +	srli	a2, a2, 1
  +	add	a2, a2, a5
  +	srli	a2, a2, 2
  +	slliw	a5, a2, 3
  +	subw	a2, a2, a5
  +	addw	a1, a1, a2
  +	mulhu	a2, a3, a4
  +	sub	a3, a3, a2
  +	srli	a3, a3, 1
  +	add	a2, a2, a3
  +	srli	a2, a2, 2
  +	slliw	a3, a2, 3
  +	subw	a2, a2, a3
  +	addw	a2, t2, a2
  +	mulhu	a3, t1, a4
  +	sub	a5, t1, a3
   	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a1, a1, a4
  -	mulhu	a4, a7, a3
  -	sub	a5, a7, a4
  +	add	a3, a3, a5
  +	srli	a3, a3, 2
  +	slliw	a5, a3, 3
  +	subw	a3, a3, a5
  +	addw	a3, a7, a3
  +	mulhu	a4, t0, a4
  +	sub	a5, t0, a4
   	srli	a5, a5, 1
   	add	a4, a4, a5
   	srli	a4, a4, 2
   	slliw	a5, a4, 3
   	subw	a4, a4, a5
  -	addw	a4, a7, a4
  -	mulhu	a3, a6, a3
  -	sub	a5, a6, a3
  -	srli	a5, a5, 1
  -	add	a3, a3, a5
  -	srli	a3, a3, 2
  -	slliw	a5, a3, 3
  -	subw	a3, a3, a5
  -	addw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a4, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	addw	a4, a6, a4
  +	sw	a4, 12(a0)
  +	sw	a3, 8(a0)
  +	sw	a2, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end21:
   	.size	ur7777, .Lfunc_end21-ur7777
  @@ -931,51 +957,47 @@ sr7777:                                 # @sr7777
   	.type	main, at function
   main:                                   # @main
   # %bb.0:                                # %entry
  -	addi	sp, sp, -144
  -	sd	ra, 136(sp)                     # 8-byte Folded Spill
  -	sd	s0, 128(sp)                     # 8-byte Folded Spill
  -	sd	s1, 120(sp)                     # 8-byte Folded Spill
  -	sd	s2, 112(sp)                     # 8-byte Folded Spill
  -	sd	s3, 104(sp)                     # 8-byte Folded Spill
  -	sd	s4, 96(sp)                      # 8-byte Folded Spill
  -	sd	s5, 88(sp)                      # 8-byte Folded Spill
  -	sd	s6, 80(sp)                      # 8-byte Folded Spill
  -	sd	s7, 72(sp)                      # 8-byte Folded Spill
  -	sd	s8, 64(sp)                      # 8-byte Folded Spill
  -	sd	s9, 56(sp)                      # 8-byte Folded Spill
  -	sd	s10, 48(sp)                     # 8-byte Folded Spill
  -	sd	s11, 40(sp)                     # 8-byte Folded Spill
  +	addi	sp, sp, -128
  +	sd	ra, 120(sp)                     # 8-byte Folded Spill
  +	sd	s0, 112(sp)                     # 8-byte Folded Spill
  +	sd	s1, 104(sp)                     # 8-byte Folded Spill
  +	sd	s2, 96(sp)                      # 8-byte Folded Spill
  +	sd	s3, 88(sp)                      # 8-byte Folded Spill
  +	sd	s4, 80(sp)                      # 8-byte Folded Spill
  +	sd	s5, 72(sp)                      # 8-byte Folded Spill
  +	sd	s6, 64(sp)                      # 8-byte Folded Spill
  +	sd	s7, 56(sp)                      # 8-byte Folded Spill
  +	sd	s8, 48(sp)                      # 8-byte Folded Spill
  +	sd	s9, 40(sp)                      # 8-byte Folded Spill
  +	sd	s10, 32(sp)                     # 8-byte Folded Spill
   	li	s3, 0
   	lui	a0, %hi(u)
   	addi	s2, a0, %lo(u)
  -	addi	s1, sp, 16
  -	lui	a0, 171
  -	addiw	a0, a0, -1365
  -	slli	a0, a0, 12
  -	addi	s4, a0, -1365
  +	addi	s4, sp, 16
   	lui	a0, 699051
   	addiw	a0, a0, -1365
  -	slli	s5, a0, 32
  +	slli	s1, a0, 32
   	lui	a0, 838861
   	addiw	a0, a0, -819
  -	slli	s6, a0, 32
  -	li	s7, 6
  +	slli	s5, a0, 32
  +	li	s6, 6
   	lui	a0, 299593
   	slli	a0, a0, 1
  -	addi	s8, a0, 1171
  -	li	s9, 14
  +	addi	s7, a0, 1171
  +	li	s8, 14
   	lui	a0, 149797
  -	addiw	s10, a0, -1755
  -	slli	s11, s10, 32
  +	addiw	a0, a0, -1755
  +	slli	s9, a0, 32
  +	li	s10, 16
   .LBB24_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
   	add	s0, s2, s3
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.2:                                # %lor.lhs.false
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -987,9 +1009,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.4:                                # %lor.lhs.false19
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1004,7 +1026,7 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1018,7 +1040,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1048,9 +1070,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  +	srliw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
   # %bb.12:                               # %lor.lhs.false90
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1077,7 +1099,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1094,9 +1116,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.18:                               # %lor.lhs.false145
  @@ -1104,16 +1127,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.19:                               # %if.end154
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.20:                               # %lor.lhs.false162
  @@ -1121,7 +1145,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.21:                               # %if.end171
  @@ -1131,9 +1155,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1144,7 +1169,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1154,9 +1179,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1167,7 +1193,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1180,9 +1206,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.26:                               # %lor.lhs.false217
  @@ -1190,16 +1217,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.27:                               # %if.end226
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.28:                               # %lor.lhs.false234
  @@ -1207,7 +1235,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.29:                               # %if.end243
  @@ -1217,11 +1245,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.30:                               # %lor.lhs.false253
  @@ -1229,7 +1258,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1239,11 +1268,12 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.32:                               # %lor.lhs.false270
  @@ -1251,7 +1281,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1264,10 +1294,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.34:                               # %lor.lhs.false289
  @@ -1275,17 +1305,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.35:                               # %if.end298
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.36:                               # %lor.lhs.false306
  @@ -1293,7 +1323,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a0, a0, 1
  -	mul	a0, a0, s8
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.37:                               # %if.end315
  @@ -1303,12 +1333,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.38:                               # %lor.lhs.false325
  @@ -1316,21 +1346,21 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.39:                               # %if.end334
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.40:                               # %lor.lhs.false342
  @@ -1338,9 +1368,9 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a2, a0, 1
  -	mul	a2, a2, s8
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.41:                               # %if.end351
  @@ -1350,9 +1380,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1364,7 +1395,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1375,9 +1406,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1389,7 +1421,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1403,9 +1435,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1420,7 +1453,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1434,9 +1467,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1451,7 +1485,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1466,8 +1500,7 @@ main:                                   # @main
   	#APP
   	#NO_APP
   	addi	s3, s3, 16
  -	li	a0, 16
  -	beq	s3, a0, .LBB24_1
  +	beq	s3, s10, .LBB24_1
   # %bb.50:                               # %for.body428.preheader
   	li	s3, 0
   	lui	a0, %hi(s)
  @@ -1501,8 +1534,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1521,8 +1554,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1545,8 +1578,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1567,8 +1600,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1587,8 +1620,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 29
  +	slli	a2, a0, 1
  +	srli	a2, a2, 61
   	addw	a0, a0, a2
   	sraiw	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1596,9 +1629,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	addw	a0, a0, a2
   	sraiw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1606,8 +1639,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1634,9 +1667,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	add	a2, a2, a0
   	andi	a2, a2, -2
   	subw	a0, a0, a2
  @@ -1645,8 +1678,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -2073,20 +2106,19 @@ main:                                   # @main
   	beq	s3, s10, .LBB24_51
   # %bb.100:                              # %for.end863
   	li	a0, 0
  -	ld	ra, 136(sp)                     # 8-byte Folded Reload
  -	ld	s0, 128(sp)                     # 8-byte Folded Reload
  -	ld	s1, 120(sp)                     # 8-byte Folded Reload
  -	ld	s2, 112(sp)                     # 8-byte Folded Reload
  -	ld	s3, 104(sp)                     # 8-byte Folded Reload
  -	ld	s4, 96(sp)                      # 8-byte Folded Reload
  -	ld	s5, 88(sp)                      # 8-byte Folded Reload
  -	ld	s6, 80(sp)                      # 8-byte Folded Reload
  -	ld	s7, 72(sp)                      # 8-byte Folded Reload
  -	ld	s8, 64(sp)                      # 8-byte Folded Reload
  -	ld	s9, 56(sp)                      # 8-byte Folded Reload
  -	ld	s10, 48(sp)                     # 8-byte Folded Reload
  -	ld	s11, 40(sp)                     # 8-byte Folded Reload
  -	addi	sp, sp, 144
  +	ld	ra, 120(sp)                     # 8-byte Folded Reload
  +	ld	s0, 112(sp)                     # 8-byte Folded Reload
  +	ld	s1, 104(sp)                     # 8-byte Folded Reload
  +	ld	s2, 96(sp)                      # 8-byte Folded Reload
  +	ld	s3, 88(sp)                      # 8-byte Folded Reload
  +	ld	s4, 80(sp)                      # 8-byte Folded Reload
  +	ld	s5, 72(sp)                      # 8-byte Folded Reload
  +	ld	s6, 64(sp)                      # 8-byte Folded Reload
  +	ld	s7, 56(sp)                      # 8-byte Folded Reload
  +	ld	s8, 48(sp)                      # 8-byte Folded Reload
  +	ld	s9, 40(sp)                      # 8-byte Folded Reload
  +	ld	s10, 32(sp)                     # 8-byte Folded Reload
  +	addi	sp, sp, 128
   	ret
   .LBB24_101:                             # %if.then
   	call	abort
  diff --git a/output_rv64imafdc_lp64_O2/20140622-1.s b/output_rv64imafdc_lp64_O2/20140622-1.s
  index e33cce6bdf..6d20c13a92 100644
  --- a/output_rv64imafdc_lp64_O2/20140622-1.s
  +++ b/output_rv64imafdc_lp64_O2/20140622-1.s
  @@ -8,10 +8,12 @@
   test:                                   # @test
   # %bb.0:                                # %entry
   	lui	a1, %hi(p)
  -	lwu	a1, %lo(p)(a1)
  +	lw	a1, %lo(p)(a1)
   	addw	a0, a0, a1
   	slli	a0, a0, 32
   	srli	a0, a0, 32
  +	slli	a1, a1, 32
  +	srli	a1, a1, 32
   	sub	a0, a0, a1
   	ret
   .Lfunc_end0:
  diff --git a/output_rv64imafdc_lp64_O2/loop-5.s b/output_rv64imafdc_lp64_O2/loop-5.s
  index 4c4398adfe..a5bdfb93ff 100644
  --- a/output_rv64imafdc_lp64_O2/loop-5.s
  +++ b/output_rv64imafdc_lp64_O2/loop-5.s
  @@ -9,15 +9,16 @@ main:                                   # @main
   # %bb.0:                                # %entry
   	addi	sp, sp, -16
   	sd	ra, 8(sp)                       # 8-byte Folded Spill
  -	lui	a3, %hi(t)
  -	lwu	a2, %lo(t)(a3)
  -	sext.w	a0, a2
  +	lui	a2, %hi(t)
  +	lw	a0, %lo(t)(a2)
   	li	a1, 4
   	bge	a0, a1, .LBB0_9
   # %bb.1:                                # %ap.exit.i
  +	slli	a1, a0, 32
  +	srli	a3, a1, 32
   	addiw	a1, a0, 1
  -	sw	a1, %lo(t)(a3)
  -	slli	a2, a2, 2
  +	sw	a1, %lo(t)(a2)
  +	slli	a2, a3, 2
   	lui	a3, %hi(a)
   	addi	a3, a3, %lo(a)
   	add	a2, a2, a3
  diff --git a/output_rv64imafdc_lp64_O2/pr22061-1.s b/output_rv64imafdc_lp64_O2/pr22061-1.s
  index 141bfd37a9..277b8f7983 100644
  --- a/output_rv64imafdc_lp64_O2/pr22061-1.s
  +++ b/output_rv64imafdc_lp64_O2/pr22061-1.s
  @@ -17,8 +17,10 @@ foo:                                    # @foo
   bar:                                    # @bar
   # %bb.0:                                # %entry
   	lui	a1, %hi(N)
  -	lwu	a1, %lo(N)(a1)
  -	add	a0, a0, a1
  +	lw	a1, %lo(N)(a1)
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	add	a0, a0, a2
   	sb	a1, 0(a0)
   	ret
   .Lfunc_end1:
  diff --git a/output_rv64imafdc_lp64_O2/pr51581-2.s b/output_rv64imafdc_lp64_O2/pr51581-2.s
  index 7ce56aa11e..40ee3b4359 100644
  --- a/output_rv64imafdc_lp64_O2/pr51581-2.s
  +++ b/output_rv64imafdc_lp64_O2/pr51581-2.s
  @@ -44,14 +44,14 @@ f2:                                     # @f2
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB1_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -110,11 +110,13 @@ f4:                                     # @f4
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, 18
   .LBB3_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	subw	a4, a5, a4
  @@ -170,15 +172,15 @@ f6:                                     # @f6
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, 19
   .LBB5_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -210,11 +212,10 @@ f7:                                     # @f7
   	addiw	a6, a3, 1366
   .LBB6_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	sext.w	a5, a4
  -	mul	a5, a5, a6
  +	lw	a4, 0(a1)
  +	mul	a5, a4, a6
   	srli	a5, a5, 32
  -	srli	a3, a4, 31
  +	srliw	a3, a4, 31
   	addw	a3, a3, a5
   	slliw	a5, a3, 1
   	addw	a3, a3, a5
  @@ -239,14 +240,14 @@ f8:                                     # @f8
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB7_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -276,11 +277,10 @@ f9:                                     # @f9
   	li	a6, -18
   .LBB8_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 34
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -306,11 +306,13 @@ f10:                                    # @f10
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, -18
   .LBB9_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	addw	a4, a4, a5
  @@ -339,11 +341,10 @@ f11:                                    # @f11
   	li	a6, -19
   .LBB10_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 35
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -367,15 +368,15 @@ f12:                                    # @f12
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, -19
   .LBB11_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -444,10 +445,9 @@ main:                                   # @main
   	lui	a2, 1
   	lui	a3, 349525
   	addiw	a6, a3, 1366
  -	lui	a4, 171
  +	lui	a4, 699051
   	addiw	a4, a4, -1365
  -	slli	a4, a4, 12
  -	addi	a7, a4, -1365
  +	slli	a7, a4, 32
   .LBB12_3:                               # %for.body5
                                           # =>This Inner Loop Header: Depth=1
   	lw	a5, 0(s0)
  @@ -462,9 +462,10 @@ main:                                   # @main
   	bne	t0, a3, .LBB12_27
   # %bb.4:                                # %lor.lhs.false
                                           #   in Loop: Header=BB12_3 Depth=1
  -	lwu	a3, 0(s1)
  +	lw	a3, 0(s1)
   	lw	t0, 0(a0)
  -	mul	a5, a3, a7
  +	slli	a5, a3, 32
  +	mulhu	a5, a5, a7
   	srli	a5, a5, 33
   	slliw	a4, a5, 1
   	addw	a4, a4, a5
  @@ -491,24 +492,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_7:                               # %for.body22
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.8:                                # %lor.lhs.false29
                                           #   in Loop: Header=BB12_7 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -536,10 +539,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_11:                              # %for.body43
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -553,9 +555,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.12:                               # %lor.lhs.false50
                                           #   in Loop: Header=BB12_11 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  @@ -586,10 +589,9 @@ main:                                   # @main
   	lui	a4, 1
   	lui	a5, 349525
   	addiw	a6, a5, 1366
  -	lui	s1, 171
  +	lui	s1, 699051
   	addiw	s1, s1, -1365
  -	slli	s1, s1, 12
  -	addi	a7, s1, -1365
  +	slli	a7, s1, 32
   .LBB12_15:                              # %for.body64
                                           # =>This Inner Loop Header: Depth=1
   	lw	s0, 0(a2)
  @@ -604,9 +606,10 @@ main:                                   # @main
   	bne	t0, a5, .LBB12_27
   # %bb.16:                               # %lor.lhs.false71
                                           #   in Loop: Header=BB12_15 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t0, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 33
   	slliw	s1, s0, 1
   	addw	s1, s1, s0
  @@ -633,24 +636,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_19:                              # %for.body85
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.20:                               # %lor.lhs.false92
                                           #   in Loop: Header=BB12_19 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -678,10 +683,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_23:                              # %for.body106
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -695,9 +699,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.24:                               # %lor.lhs.false113
                                           #   in Loop: Header=BB12_23 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  diff --git a/output_rv64imafdc_lp64_O2/pr53645.s b/output_rv64imafdc_lp64_O2/pr53645.s
  index 56bd435ece..7c352a0b5d 100644
  --- a/output_rv64imafdc_lp64_O2/pr53645.s
  +++ b/output_rv64imafdc_lp64_O2/pr53645.s
  @@ -188,7 +188,7 @@ sq1428:                                 # @sq1428
   sr1428:                                 # @sr1428
   # %bb.0:                                # %entry
   	lw	a2, 4(a1)
  -	lwu	a3, 8(a1)
  +	lw	a3, 8(a1)
   	lw	a1, 12(a1)
   	slli	a4, a2, 1
   	srli	a4, a4, 62
  @@ -200,7 +200,7 @@ sr1428:                                 # @sr1428
   	add	a4, a4, a1
   	andi	a4, a4, -8
   	subw	a1, a1, a4
  -	srli	a4, a3, 31
  +	srliw	a4, a3, 31
   	add	a4, a4, a3
   	andi	a4, a4, -2
   	subw	a3, a3, a4
  @@ -254,36 +254,44 @@ uq3333:                                 # @uq3333
   	.type	ur3333, at function
   ur3333:                                 # @ur3333
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI9_0)
  -	ld	a3, %lo(.LCPI9_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	srli	a7, a4, 1
  -	andi	a4, a4, -2
  -	addw	a4, a4, a7
  -	subw	a7, a2, a4
  -	mulhu	a4, a1, a3
  -	srli	a2, a4, 1
  -	andi	a4, a4, -2
  -	addw	a2, a2, a4
  -	subw	a1, a1, a2
  -	mulhu	a2, a5, a3
  -	srli	a4, a2, 1
  -	andi	a2, a2, -2
  -	addw	a2, a2, a4
  -	subw	a2, a5, a2
  -	mulhu	a3, a6, a3
  +	lw	t0, 12(a1)
  +	lw	t1, 8(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 4(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 0(a1)
  +	lui	a2, %hi(.LCPI9_0)
  +	ld	a2, %lo(.LCPI9_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 1
   	andi	a3, a3, -2
   	addw	a3, a3, a4
  -	subw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a2, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a7, 0(a0)
  +	subw	a1, a1, a3
  +	mulhu	a3, t2, a2
  +	srli	a4, a3, 1
  +	andi	a3, a3, -2
  +	addw	a3, a3, a4
  +	subw	a3, a5, a3
  +	mulhu	a4, a7, a2
  +	srli	a5, a4, 1
  +	andi	a4, a4, -2
  +	addw	a4, a4, a5
  +	subw	a4, t1, a4
  +	mulhu	a2, a6, a2
  +	srli	a5, a2, 1
  +	andi	a2, a2, -2
  +	addw	a2, a2, a5
  +	subw	a2, t0, a2
  +	sw	a2, 12(a0)
  +	sw	a4, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end9:
   	.size	ur3333, .Lfunc_end9-ur3333
  @@ -420,36 +428,44 @@ uq6565:                                 # @uq6565
   	.type	ur6565, at function
   ur6565:                                 # @ur6565
   # %bb.0:                                # %entry
  -	lwu	a2, 4(a1)
  -	lui	a3, %hi(.LCPI13_0)
  -	ld	a3, %lo(.LCPI13_0)(a3)
  -	lwu	a6, 8(a1)
  -	lwu	a7, 0(a1)
  -	lwu	a1, 12(a1)
  -	mulhu	a4, a2, a3
  -	srli	a5, a4, 2
  -	andi	a4, a4, -4
  -	addw	a4, a4, a5
  -	subw	a2, a2, a4
  -	mulhu	a3, a1, a3
  +	lw	t0, 8(a1)
  +	lw	t1, 0(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 12(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 4(a1)
  +	lui	a2, %hi(.LCPI13_0)
  +	ld	a2, %lo(.LCPI13_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 2
  -	lui	a5, %hi(.LCPI13_1)
  -	ld	a5, %lo(.LCPI13_1)(a5)
   	andi	a3, a3, -4
   	addw	a3, a3, a4
   	subw	a1, a1, a3
  -	mulhu	a3, a7, a5
  +	mulhu	a2, t2, a2
  +	srli	a3, a2, 2
  +	lui	a4, %hi(.LCPI13_1)
  +	ld	a4, %lo(.LCPI13_1)(a4)
  +	andi	a2, a2, -4
  +	addw	a2, a2, a3
  +	subw	a2, a5, a2
  +	mulhu	a3, a7, a4
   	srli	a3, a3, 2
  -	li	a4, 6
  -	mulw	a3, a3, a4
  -	subw	a3, a7, a3
  -	mulhu	a5, a6, a5
  -	srli	a5, a5, 2
  -	mulw	a4, a5, a4
  -	subw	a4, a6, a4
  -	sw	a1, 12(a0)
  +	li	a5, 6
  +	mulw	a3, a3, a5
  +	subw	a3, t1, a3
  +	mulhu	a4, a6, a4
  +	srli	a4, a4, 2
  +	mulw	a4, a4, a5
  +	subw	a4, t0, a4
  +	sw	a2, 12(a0)
   	sw	a4, 8(a0)
  -	sw	a2, 4(a0)
  +	sw	a1, 4(a0)
   	sw	a3, 0(a0)
   	ret
   .Lfunc_end13:
  @@ -592,48 +608,50 @@ uq1414146:                              # @uq1414146
   	.section	.sdata,"aw", at progbits
   	.p2align	3                               # -- Begin function ur1414146
   .LCPI17_0:
  -	.quad	5270498306774157605             # 0x4924924924924925
  -.LCPI17_1:
   	.quad	-6148914691236517205            # 0xaaaaaaaaaaaaaaab
  +.LCPI17_1:
  +	.quad	5270498306774157605             # 0x4924924924924925
   	.text
   	.globl	ur1414146
   	.p2align	1
   	.type	ur1414146, at function
   ur1414146:                              # @ur1414146
   # %bb.0:                                # %entry
  -	lwu	a6, 12(a1)
  -	lwu	a3, 0(a1)
  -	lui	a4, %hi(.LCPI17_0)
  -	ld	a4, %lo(.LCPI17_0)(a4)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	srli	a2, a3, 1
  -	mulhu	a2, a2, a4
  -	srli	a2, a2, 1
  -	li	a7, 14
  +	lw	a6, 8(a1)
  +	lw	a3, 4(a1)
  +	lw	a4, 12(a1)
  +	lui	a5, %hi(.LCPI17_0)
  +	ld	a5, %lo(.LCPI17_0)(a5)
  +	lw	a1, 0(a1)
  +	slli	a2, a4, 32
  +	srli	a2, a2, 32
  +	mulhu	a2, a2, a5
  +	srli	a2, a2, 2
  +	li	a7, 6
  +	lui	a5, %hi(.LCPI17_1)
  +	ld	a5, %lo(.LCPI17_1)(a5)
   	mulw	a2, a2, a7
  -	subw	a2, a3, a2
  -	srli	a3, a1, 1
  -	mulhu	a3, a3, a4
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a1, a1, a3
  -	srli	a3, a5, 1
  -	mulhu	a3, a3, a4
  -	lui	a4, %hi(.LCPI17_1)
  -	ld	a4, %lo(.LCPI17_1)(a4)
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a3, a5, a3
  -	mulhu	a4, a6, a4
  -	srli	a4, a4, 2
  -	li	a5, 6
  -	mulw	a4, a4, a5
  -	subw	a4, a6, a4
  -	sw	a4, 12(a0)
  -	sw	a3, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	subw	a7, a4, a2
  +	srliw	a4, a1, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	li	a2, 14
  +	mulw	a4, a4, a2
  +	subw	a1, a1, a4
  +	srliw	a4, a3, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a4, a4, a2
  +	subw	a3, a3, a4
  +	srliw	a4, a6, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a2, a4, a2
  +	subw	a2, a6, a2
  +	sw	a2, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
  +	sw	a7, 12(a0)
   	ret
   .Lfunc_end17:
   	.size	ur1414146, .Lfunc_end17-ur1414146
  @@ -788,48 +806,56 @@ uq7777:                                 # @uq7777
   	.type	ur7777, at function
   ur7777:                                 # @ur7777
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI21_0)
  -	ld	a3, %lo(.LCPI21_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a7, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	sub	a5, a2, a4
  -	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a2, a2, a4
  -	mulhu	a4, a1, a3
  -	sub	a5, a1, a4
  +	lw	a6, 12(a1)
  +	lw	a7, 8(a1)
  +	slli	a4, a6, 32
  +	lw	t2, 4(a1)
  +	srli	t0, a4, 32
  +	slli	a2, a7, 32
  +	srli	t1, a2, 32
  +	slli	a3, t2, 32
  +	lw	a1, 0(a1)
  +	lui	a4, %hi(.LCPI21_0)
  +	ld	a4, %lo(.LCPI21_0)(a4)
  +	srli	a3, a3, 32
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	mulhu	a5, a2, a4
  +	sub	a2, a2, a5
  +	srli	a2, a2, 1
  +	add	a2, a2, a5
  +	srli	a2, a2, 2
  +	slliw	a5, a2, 3
  +	subw	a2, a2, a5
  +	addw	a1, a1, a2
  +	mulhu	a2, a3, a4
  +	sub	a3, a3, a2
  +	srli	a3, a3, 1
  +	add	a2, a2, a3
  +	srli	a2, a2, 2
  +	slliw	a3, a2, 3
  +	subw	a2, a2, a3
  +	addw	a2, t2, a2
  +	mulhu	a3, t1, a4
  +	sub	a5, t1, a3
   	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a1, a1, a4
  -	mulhu	a4, a7, a3
  -	sub	a5, a7, a4
  +	add	a3, a3, a5
  +	srli	a3, a3, 2
  +	slliw	a5, a3, 3
  +	subw	a3, a3, a5
  +	addw	a3, a7, a3
  +	mulhu	a4, t0, a4
  +	sub	a5, t0, a4
   	srli	a5, a5, 1
   	add	a4, a4, a5
   	srli	a4, a4, 2
   	slliw	a5, a4, 3
   	subw	a4, a4, a5
  -	addw	a4, a7, a4
  -	mulhu	a3, a6, a3
  -	sub	a5, a6, a3
  -	srli	a5, a5, 1
  -	add	a3, a3, a5
  -	srli	a3, a3, 2
  -	slliw	a5, a3, 3
  -	subw	a3, a3, a5
  -	addw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a4, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	addw	a4, a6, a4
  +	sw	a4, 12(a0)
  +	sw	a3, 8(a0)
  +	sw	a2, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end21:
   	.size	ur7777, .Lfunc_end21-ur7777
  @@ -931,43 +957,37 @@ sr7777:                                 # @sr7777
   	.type	main, at function
   main:                                   # @main
   # %bb.0:                                # %entry
  -	addi	sp, sp, -144
  -	sd	ra, 136(sp)                     # 8-byte Folded Spill
  -	sd	s0, 128(sp)                     # 8-byte Folded Spill
  -	sd	s1, 120(sp)                     # 8-byte Folded Spill
  -	sd	s2, 112(sp)                     # 8-byte Folded Spill
  -	sd	s3, 104(sp)                     # 8-byte Folded Spill
  -	sd	s4, 96(sp)                      # 8-byte Folded Spill
  -	sd	s5, 88(sp)                      # 8-byte Folded Spill
  -	sd	s6, 80(sp)                      # 8-byte Folded Spill
  -	sd	s7, 72(sp)                      # 8-byte Folded Spill
  -	sd	s8, 64(sp)                      # 8-byte Folded Spill
  -	sd	s9, 56(sp)                      # 8-byte Folded Spill
  -	sd	s10, 48(sp)                     # 8-byte Folded Spill
  -	sd	s11, 40(sp)                     # 8-byte Folded Spill
  +	addi	sp, sp, -128
  +	sd	ra, 120(sp)                     # 8-byte Folded Spill
  +	sd	s0, 112(sp)                     # 8-byte Folded Spill
  +	sd	s1, 104(sp)                     # 8-byte Folded Spill
  +	sd	s2, 96(sp)                      # 8-byte Folded Spill
  +	sd	s3, 88(sp)                      # 8-byte Folded Spill
  +	sd	s4, 80(sp)                      # 8-byte Folded Spill
  +	sd	s5, 72(sp)                      # 8-byte Folded Spill
  +	sd	s6, 64(sp)                      # 8-byte Folded Spill
  +	sd	s7, 56(sp)                      # 8-byte Folded Spill
  +	sd	s8, 48(sp)                      # 8-byte Folded Spill
  +	sd	s9, 40(sp)                      # 8-byte Folded Spill
   	li	a0, 0
   	li	s3, 1
   	lui	a1, %hi(u)
   	addi	s2, a1, %lo(u)
  -	addi	s1, sp, 16
  -	lui	a1, 171
  -	addiw	a1, a1, -1365
  -	slli	a1, a1, 12
  -	addi	s4, a1, -1365
  +	addi	s4, sp, 16
   	lui	a1, 699051
   	addiw	a1, a1, -1365
  -	slli	s5, a1, 32
  +	slli	s1, a1, 32
   	lui	a1, 838861
   	addiw	a1, a1, -819
  -	slli	s6, a1, 32
  -	li	s7, 6
  +	slli	s5, a1, 32
  +	li	s6, 6
   	lui	a1, 299593
   	slli	a1, a1, 1
  -	addi	s8, a1, 1171
  -	li	s9, 14
  +	addi	s7, a1, 1171
  +	li	s8, 14
   	lui	a1, 149797
  -	addiw	s10, a1, -1755
  -	slli	s11, s10, 32
  +	addiw	a1, a1, -1755
  +	slli	s9, a1, 32
   .LBB24_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
   	slli	a0, a0, 4
  @@ -975,9 +995,9 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.2:                                # %lor.lhs.false
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -989,9 +1009,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.4:                                # %lor.lhs.false19
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1006,7 +1026,7 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1020,7 +1040,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1050,9 +1070,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  +	srliw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
   # %bb.12:                               # %lor.lhs.false90
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1079,7 +1099,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1096,9 +1116,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.18:                               # %lor.lhs.false145
  @@ -1106,16 +1127,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.19:                               # %if.end154
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.20:                               # %lor.lhs.false162
  @@ -1123,7 +1145,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.21:                               # %if.end171
  @@ -1133,9 +1155,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1146,7 +1169,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1156,9 +1179,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1169,7 +1193,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1182,9 +1206,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.26:                               # %lor.lhs.false217
  @@ -1192,16 +1217,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.27:                               # %if.end226
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.28:                               # %lor.lhs.false234
  @@ -1209,7 +1235,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.29:                               # %if.end243
  @@ -1219,11 +1245,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.30:                               # %lor.lhs.false253
  @@ -1231,7 +1258,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1241,11 +1268,12 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.32:                               # %lor.lhs.false270
  @@ -1253,7 +1281,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1266,10 +1294,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.34:                               # %lor.lhs.false289
  @@ -1277,17 +1305,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.35:                               # %if.end298
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.36:                               # %lor.lhs.false306
  @@ -1295,7 +1323,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a0, a0, 1
  -	mul	a0, a0, s8
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.37:                               # %if.end315
  @@ -1305,12 +1333,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.38:                               # %lor.lhs.false325
  @@ -1318,21 +1346,21 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.39:                               # %if.end334
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.40:                               # %lor.lhs.false342
  @@ -1340,9 +1368,9 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a2, a0, 1
  -	mul	a2, a2, s8
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.41:                               # %if.end351
  @@ -1352,9 +1380,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1366,7 +1395,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1377,9 +1406,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1391,7 +1421,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1405,9 +1435,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1422,7 +1453,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1436,9 +1467,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1453,7 +1485,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1505,8 +1537,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1525,8 +1557,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1549,8 +1581,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1571,8 +1603,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1591,8 +1623,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 29
  +	slli	a2, a0, 1
  +	srli	a2, a2, 61
   	addw	a0, a0, a2
   	sraiw	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1600,9 +1632,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	addw	a0, a0, a2
   	sraiw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1610,8 +1642,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1638,9 +1670,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	add	a2, a2, a0
   	andi	a2, a2, -2
   	subw	a0, a0, a2
  @@ -1649,8 +1681,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -2079,20 +2111,18 @@ main:                                   # @main
   	bnez	a1, .LBB24_51
   # %bb.100:                              # %for.end863
   	li	a0, 0
  -	ld	ra, 136(sp)                     # 8-byte Folded Reload
  -	ld	s0, 128(sp)                     # 8-byte Folded Reload
  -	ld	s1, 120(sp)                     # 8-byte Folded Reload
  -	ld	s2, 112(sp)                     # 8-byte Folded Reload
  -	ld	s3, 104(sp)                     # 8-byte Folded Reload
  -	ld	s4, 96(sp)                      # 8-byte Folded Reload
  -	ld	s5, 88(sp)                      # 8-byte Folded Reload
  -	ld	s6, 80(sp)                      # 8-byte Folded Reload
  -	ld	s7, 72(sp)                      # 8-byte Folded Reload
  -	ld	s8, 64(sp)                      # 8-byte Folded Reload
  -	ld	s9, 56(sp)                      # 8-byte Folded Reload
  -	ld	s10, 48(sp)                     # 8-byte Folded Reload
  -	ld	s11, 40(sp)                     # 8-byte Folded Reload
  -	addi	sp, sp, 144
  +	ld	ra, 120(sp)                     # 8-byte Folded Reload
  +	ld	s0, 112(sp)                     # 8-byte Folded Reload
  +	ld	s1, 104(sp)                     # 8-byte Folded Reload
  +	ld	s2, 96(sp)                      # 8-byte Folded Reload
  +	ld	s3, 88(sp)                      # 8-byte Folded Reload
  +	ld	s4, 80(sp)                      # 8-byte Folded Reload
  +	ld	s5, 72(sp)                      # 8-byte Folded Reload
  +	ld	s6, 64(sp)                      # 8-byte Folded Reload
  +	ld	s7, 56(sp)                      # 8-byte Folded Reload
  +	ld	s8, 48(sp)                      # 8-byte Folded Reload
  +	ld	s9, 40(sp)                      # 8-byte Folded Reload
  +	addi	sp, sp, 128
   	ret
   .LBB24_101:                             # %if.then
   	call	abort
  diff --git a/output_rv64imafdc_lp64_O3/20140622-1.s b/output_rv64imafdc_lp64_O3/20140622-1.s
  index e33cce6bdf..6d20c13a92 100644
  --- a/output_rv64imafdc_lp64_O3/20140622-1.s
  +++ b/output_rv64imafdc_lp64_O3/20140622-1.s
  @@ -8,10 +8,12 @@
   test:                                   # @test
   # %bb.0:                                # %entry
   	lui	a1, %hi(p)
  -	lwu	a1, %lo(p)(a1)
  +	lw	a1, %lo(p)(a1)
   	addw	a0, a0, a1
   	slli	a0, a0, 32
   	srli	a0, a0, 32
  +	slli	a1, a1, 32
  +	srli	a1, a1, 32
   	sub	a0, a0, a1
   	ret
   .Lfunc_end0:
  diff --git a/output_rv64imafdc_lp64_O3/loop-5.s b/output_rv64imafdc_lp64_O3/loop-5.s
  index 4c4398adfe..a5bdfb93ff 100644
  --- a/output_rv64imafdc_lp64_O3/loop-5.s
  +++ b/output_rv64imafdc_lp64_O3/loop-5.s
  @@ -9,15 +9,16 @@ main:                                   # @main
   # %bb.0:                                # %entry
   	addi	sp, sp, -16
   	sd	ra, 8(sp)                       # 8-byte Folded Spill
  -	lui	a3, %hi(t)
  -	lwu	a2, %lo(t)(a3)
  -	sext.w	a0, a2
  +	lui	a2, %hi(t)
  +	lw	a0, %lo(t)(a2)
   	li	a1, 4
   	bge	a0, a1, .LBB0_9
   # %bb.1:                                # %ap.exit.i
  +	slli	a1, a0, 32
  +	srli	a3, a1, 32
   	addiw	a1, a0, 1
  -	sw	a1, %lo(t)(a3)
  -	slli	a2, a2, 2
  +	sw	a1, %lo(t)(a2)
  +	slli	a2, a3, 2
   	lui	a3, %hi(a)
   	addi	a3, a3, %lo(a)
   	add	a2, a2, a3
  diff --git a/output_rv64imafdc_lp64_O3/pr22061-1.s b/output_rv64imafdc_lp64_O3/pr22061-1.s
  index 141bfd37a9..277b8f7983 100644
  --- a/output_rv64imafdc_lp64_O3/pr22061-1.s
  +++ b/output_rv64imafdc_lp64_O3/pr22061-1.s
  @@ -17,8 +17,10 @@ foo:                                    # @foo
   bar:                                    # @bar
   # %bb.0:                                # %entry
   	lui	a1, %hi(N)
  -	lwu	a1, %lo(N)(a1)
  -	add	a0, a0, a1
  +	lw	a1, %lo(N)(a1)
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	add	a0, a0, a2
   	sb	a1, 0(a0)
   	ret
   .Lfunc_end1:
  diff --git a/output_rv64imafdc_lp64_O3/pr51581-2.s b/output_rv64imafdc_lp64_O3/pr51581-2.s
  index 7ce56aa11e..40ee3b4359 100644
  --- a/output_rv64imafdc_lp64_O3/pr51581-2.s
  +++ b/output_rv64imafdc_lp64_O3/pr51581-2.s
  @@ -44,14 +44,14 @@ f2:                                     # @f2
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB1_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -110,11 +110,13 @@ f4:                                     # @f4
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, 18
   .LBB3_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	subw	a4, a5, a4
  @@ -170,15 +172,15 @@ f6:                                     # @f6
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, 19
   .LBB5_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -210,11 +212,10 @@ f7:                                     # @f7
   	addiw	a6, a3, 1366
   .LBB6_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	sext.w	a5, a4
  -	mul	a5, a5, a6
  +	lw	a4, 0(a1)
  +	mul	a5, a4, a6
   	srli	a5, a5, 32
  -	srli	a3, a4, 31
  +	srliw	a3, a4, 31
   	addw	a3, a3, a5
   	slliw	a5, a3, 1
   	addw	a3, a3, a5
  @@ -239,14 +240,14 @@ f8:                                     # @f8
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB7_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -276,11 +277,10 @@ f9:                                     # @f9
   	li	a6, -18
   .LBB8_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 34
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -306,11 +306,13 @@ f10:                                    # @f10
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, -18
   .LBB9_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	addw	a4, a4, a5
  @@ -339,11 +341,10 @@ f11:                                    # @f11
   	li	a6, -19
   .LBB10_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 35
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -367,15 +368,15 @@ f12:                                    # @f12
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, -19
   .LBB11_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -444,10 +445,9 @@ main:                                   # @main
   	lui	a2, 1
   	lui	a3, 349525
   	addiw	a6, a3, 1366
  -	lui	a4, 171
  +	lui	a4, 699051
   	addiw	a4, a4, -1365
  -	slli	a4, a4, 12
  -	addi	a7, a4, -1365
  +	slli	a7, a4, 32
   .LBB12_3:                               # %for.body5
                                           # =>This Inner Loop Header: Depth=1
   	lw	a5, 0(s0)
  @@ -462,9 +462,10 @@ main:                                   # @main
   	bne	t0, a3, .LBB12_27
   # %bb.4:                                # %lor.lhs.false
                                           #   in Loop: Header=BB12_3 Depth=1
  -	lwu	a3, 0(s1)
  +	lw	a3, 0(s1)
   	lw	t0, 0(a0)
  -	mul	a5, a3, a7
  +	slli	a5, a3, 32
  +	mulhu	a5, a5, a7
   	srli	a5, a5, 33
   	slliw	a4, a5, 1
   	addw	a4, a4, a5
  @@ -491,24 +492,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_7:                               # %for.body22
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.8:                                # %lor.lhs.false29
                                           #   in Loop: Header=BB12_7 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -536,10 +539,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_11:                              # %for.body43
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -553,9 +555,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.12:                               # %lor.lhs.false50
                                           #   in Loop: Header=BB12_11 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  @@ -586,10 +589,9 @@ main:                                   # @main
   	lui	a4, 1
   	lui	a5, 349525
   	addiw	a6, a5, 1366
  -	lui	s1, 171
  +	lui	s1, 699051
   	addiw	s1, s1, -1365
  -	slli	s1, s1, 12
  -	addi	a7, s1, -1365
  +	slli	a7, s1, 32
   .LBB12_15:                              # %for.body64
                                           # =>This Inner Loop Header: Depth=1
   	lw	s0, 0(a2)
  @@ -604,9 +606,10 @@ main:                                   # @main
   	bne	t0, a5, .LBB12_27
   # %bb.16:                               # %lor.lhs.false71
                                           #   in Loop: Header=BB12_15 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t0, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 33
   	slliw	s1, s0, 1
   	addw	s1, s1, s0
  @@ -633,24 +636,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_19:                              # %for.body85
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.20:                               # %lor.lhs.false92
                                           #   in Loop: Header=BB12_19 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -678,10 +683,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_23:                              # %for.body106
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -695,9 +699,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.24:                               # %lor.lhs.false113
                                           #   in Loop: Header=BB12_23 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  diff --git a/output_rv64imafdc_lp64_O3/pr53645.s b/output_rv64imafdc_lp64_O3/pr53645.s
  index 56bd435ece..7c352a0b5d 100644
  --- a/output_rv64imafdc_lp64_O3/pr53645.s
  +++ b/output_rv64imafdc_lp64_O3/pr53645.s
  @@ -188,7 +188,7 @@ sq1428:                                 # @sq1428
   sr1428:                                 # @sr1428
   # %bb.0:                                # %entry
   	lw	a2, 4(a1)
  -	lwu	a3, 8(a1)
  +	lw	a3, 8(a1)
   	lw	a1, 12(a1)
   	slli	a4, a2, 1
   	srli	a4, a4, 62
  @@ -200,7 +200,7 @@ sr1428:                                 # @sr1428
   	add	a4, a4, a1
   	andi	a4, a4, -8
   	subw	a1, a1, a4
  -	srli	a4, a3, 31
  +	srliw	a4, a3, 31
   	add	a4, a4, a3
   	andi	a4, a4, -2
   	subw	a3, a3, a4
  @@ -254,36 +254,44 @@ uq3333:                                 # @uq3333
   	.type	ur3333, at function
   ur3333:                                 # @ur3333
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI9_0)
  -	ld	a3, %lo(.LCPI9_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	srli	a7, a4, 1
  -	andi	a4, a4, -2
  -	addw	a4, a4, a7
  -	subw	a7, a2, a4
  -	mulhu	a4, a1, a3
  -	srli	a2, a4, 1
  -	andi	a4, a4, -2
  -	addw	a2, a2, a4
  -	subw	a1, a1, a2
  -	mulhu	a2, a5, a3
  -	srli	a4, a2, 1
  -	andi	a2, a2, -2
  -	addw	a2, a2, a4
  -	subw	a2, a5, a2
  -	mulhu	a3, a6, a3
  +	lw	t0, 12(a1)
  +	lw	t1, 8(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 4(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 0(a1)
  +	lui	a2, %hi(.LCPI9_0)
  +	ld	a2, %lo(.LCPI9_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 1
   	andi	a3, a3, -2
   	addw	a3, a3, a4
  -	subw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a2, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a7, 0(a0)
  +	subw	a1, a1, a3
  +	mulhu	a3, t2, a2
  +	srli	a4, a3, 1
  +	andi	a3, a3, -2
  +	addw	a3, a3, a4
  +	subw	a3, a5, a3
  +	mulhu	a4, a7, a2
  +	srli	a5, a4, 1
  +	andi	a4, a4, -2
  +	addw	a4, a4, a5
  +	subw	a4, t1, a4
  +	mulhu	a2, a6, a2
  +	srli	a5, a2, 1
  +	andi	a2, a2, -2
  +	addw	a2, a2, a5
  +	subw	a2, t0, a2
  +	sw	a2, 12(a0)
  +	sw	a4, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end9:
   	.size	ur3333, .Lfunc_end9-ur3333
  @@ -420,36 +428,44 @@ uq6565:                                 # @uq6565
   	.type	ur6565, at function
   ur6565:                                 # @ur6565
   # %bb.0:                                # %entry
  -	lwu	a2, 4(a1)
  -	lui	a3, %hi(.LCPI13_0)
  -	ld	a3, %lo(.LCPI13_0)(a3)
  -	lwu	a6, 8(a1)
  -	lwu	a7, 0(a1)
  -	lwu	a1, 12(a1)
  -	mulhu	a4, a2, a3
  -	srli	a5, a4, 2
  -	andi	a4, a4, -4
  -	addw	a4, a4, a5
  -	subw	a2, a2, a4
  -	mulhu	a3, a1, a3
  +	lw	t0, 8(a1)
  +	lw	t1, 0(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 12(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 4(a1)
  +	lui	a2, %hi(.LCPI13_0)
  +	ld	a2, %lo(.LCPI13_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 2
  -	lui	a5, %hi(.LCPI13_1)
  -	ld	a5, %lo(.LCPI13_1)(a5)
   	andi	a3, a3, -4
   	addw	a3, a3, a4
   	subw	a1, a1, a3
  -	mulhu	a3, a7, a5
  +	mulhu	a2, t2, a2
  +	srli	a3, a2, 2
  +	lui	a4, %hi(.LCPI13_1)
  +	ld	a4, %lo(.LCPI13_1)(a4)
  +	andi	a2, a2, -4
  +	addw	a2, a2, a3
  +	subw	a2, a5, a2
  +	mulhu	a3, a7, a4
   	srli	a3, a3, 2
  -	li	a4, 6
  -	mulw	a3, a3, a4
  -	subw	a3, a7, a3
  -	mulhu	a5, a6, a5
  -	srli	a5, a5, 2
  -	mulw	a4, a5, a4
  -	subw	a4, a6, a4
  -	sw	a1, 12(a0)
  +	li	a5, 6
  +	mulw	a3, a3, a5
  +	subw	a3, t1, a3
  +	mulhu	a4, a6, a4
  +	srli	a4, a4, 2
  +	mulw	a4, a4, a5
  +	subw	a4, t0, a4
  +	sw	a2, 12(a0)
   	sw	a4, 8(a0)
  -	sw	a2, 4(a0)
  +	sw	a1, 4(a0)
   	sw	a3, 0(a0)
   	ret
   .Lfunc_end13:
  @@ -592,48 +608,50 @@ uq1414146:                              # @uq1414146
   	.section	.sdata,"aw", at progbits
   	.p2align	3                               # -- Begin function ur1414146
   .LCPI17_0:
  -	.quad	5270498306774157605             # 0x4924924924924925
  -.LCPI17_1:
   	.quad	-6148914691236517205            # 0xaaaaaaaaaaaaaaab
  +.LCPI17_1:
  +	.quad	5270498306774157605             # 0x4924924924924925
   	.text
   	.globl	ur1414146
   	.p2align	1
   	.type	ur1414146, at function
   ur1414146:                              # @ur1414146
   # %bb.0:                                # %entry
  -	lwu	a6, 12(a1)
  -	lwu	a3, 0(a1)
  -	lui	a4, %hi(.LCPI17_0)
  -	ld	a4, %lo(.LCPI17_0)(a4)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	srli	a2, a3, 1
  -	mulhu	a2, a2, a4
  -	srli	a2, a2, 1
  -	li	a7, 14
  +	lw	a6, 8(a1)
  +	lw	a3, 4(a1)
  +	lw	a4, 12(a1)
  +	lui	a5, %hi(.LCPI17_0)
  +	ld	a5, %lo(.LCPI17_0)(a5)
  +	lw	a1, 0(a1)
  +	slli	a2, a4, 32
  +	srli	a2, a2, 32
  +	mulhu	a2, a2, a5
  +	srli	a2, a2, 2
  +	li	a7, 6
  +	lui	a5, %hi(.LCPI17_1)
  +	ld	a5, %lo(.LCPI17_1)(a5)
   	mulw	a2, a2, a7
  -	subw	a2, a3, a2
  -	srli	a3, a1, 1
  -	mulhu	a3, a3, a4
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a1, a1, a3
  -	srli	a3, a5, 1
  -	mulhu	a3, a3, a4
  -	lui	a4, %hi(.LCPI17_1)
  -	ld	a4, %lo(.LCPI17_1)(a4)
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a3, a5, a3
  -	mulhu	a4, a6, a4
  -	srli	a4, a4, 2
  -	li	a5, 6
  -	mulw	a4, a4, a5
  -	subw	a4, a6, a4
  -	sw	a4, 12(a0)
  -	sw	a3, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	subw	a7, a4, a2
  +	srliw	a4, a1, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	li	a2, 14
  +	mulw	a4, a4, a2
  +	subw	a1, a1, a4
  +	srliw	a4, a3, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a4, a4, a2
  +	subw	a3, a3, a4
  +	srliw	a4, a6, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a2, a4, a2
  +	subw	a2, a6, a2
  +	sw	a2, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
  +	sw	a7, 12(a0)
   	ret
   .Lfunc_end17:
   	.size	ur1414146, .Lfunc_end17-ur1414146
  @@ -788,48 +806,56 @@ uq7777:                                 # @uq7777
   	.type	ur7777, at function
   ur7777:                                 # @ur7777
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI21_0)
  -	ld	a3, %lo(.LCPI21_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a7, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	sub	a5, a2, a4
  -	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a2, a2, a4
  -	mulhu	a4, a1, a3
  -	sub	a5, a1, a4
  +	lw	a6, 12(a1)
  +	lw	a7, 8(a1)
  +	slli	a4, a6, 32
  +	lw	t2, 4(a1)
  +	srli	t0, a4, 32
  +	slli	a2, a7, 32
  +	srli	t1, a2, 32
  +	slli	a3, t2, 32
  +	lw	a1, 0(a1)
  +	lui	a4, %hi(.LCPI21_0)
  +	ld	a4, %lo(.LCPI21_0)(a4)
  +	srli	a3, a3, 32
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	mulhu	a5, a2, a4
  +	sub	a2, a2, a5
  +	srli	a2, a2, 1
  +	add	a2, a2, a5
  +	srli	a2, a2, 2
  +	slliw	a5, a2, 3
  +	subw	a2, a2, a5
  +	addw	a1, a1, a2
  +	mulhu	a2, a3, a4
  +	sub	a3, a3, a2
  +	srli	a3, a3, 1
  +	add	a2, a2, a3
  +	srli	a2, a2, 2
  +	slliw	a3, a2, 3
  +	subw	a2, a2, a3
  +	addw	a2, t2, a2
  +	mulhu	a3, t1, a4
  +	sub	a5, t1, a3
   	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a1, a1, a4
  -	mulhu	a4, a7, a3
  -	sub	a5, a7, a4
  +	add	a3, a3, a5
  +	srli	a3, a3, 2
  +	slliw	a5, a3, 3
  +	subw	a3, a3, a5
  +	addw	a3, a7, a3
  +	mulhu	a4, t0, a4
  +	sub	a5, t0, a4
   	srli	a5, a5, 1
   	add	a4, a4, a5
   	srli	a4, a4, 2
   	slliw	a5, a4, 3
   	subw	a4, a4, a5
  -	addw	a4, a7, a4
  -	mulhu	a3, a6, a3
  -	sub	a5, a6, a3
  -	srli	a5, a5, 1
  -	add	a3, a3, a5
  -	srli	a3, a3, 2
  -	slliw	a5, a3, 3
  -	subw	a3, a3, a5
  -	addw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a4, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	addw	a4, a6, a4
  +	sw	a4, 12(a0)
  +	sw	a3, 8(a0)
  +	sw	a2, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end21:
   	.size	ur7777, .Lfunc_end21-ur7777
  @@ -931,43 +957,37 @@ sr7777:                                 # @sr7777
   	.type	main, at function
   main:                                   # @main
   # %bb.0:                                # %entry
  -	addi	sp, sp, -144
  -	sd	ra, 136(sp)                     # 8-byte Folded Spill
  -	sd	s0, 128(sp)                     # 8-byte Folded Spill
  -	sd	s1, 120(sp)                     # 8-byte Folded Spill
  -	sd	s2, 112(sp)                     # 8-byte Folded Spill
  -	sd	s3, 104(sp)                     # 8-byte Folded Spill
  -	sd	s4, 96(sp)                      # 8-byte Folded Spill
  -	sd	s5, 88(sp)                      # 8-byte Folded Spill
  -	sd	s6, 80(sp)                      # 8-byte Folded Spill
  -	sd	s7, 72(sp)                      # 8-byte Folded Spill
  -	sd	s8, 64(sp)                      # 8-byte Folded Spill
  -	sd	s9, 56(sp)                      # 8-byte Folded Spill
  -	sd	s10, 48(sp)                     # 8-byte Folded Spill
  -	sd	s11, 40(sp)                     # 8-byte Folded Spill
  +	addi	sp, sp, -128
  +	sd	ra, 120(sp)                     # 8-byte Folded Spill
  +	sd	s0, 112(sp)                     # 8-byte Folded Spill
  +	sd	s1, 104(sp)                     # 8-byte Folded Spill
  +	sd	s2, 96(sp)                      # 8-byte Folded Spill
  +	sd	s3, 88(sp)                      # 8-byte Folded Spill
  +	sd	s4, 80(sp)                      # 8-byte Folded Spill
  +	sd	s5, 72(sp)                      # 8-byte Folded Spill
  +	sd	s6, 64(sp)                      # 8-byte Folded Spill
  +	sd	s7, 56(sp)                      # 8-byte Folded Spill
  +	sd	s8, 48(sp)                      # 8-byte Folded Spill
  +	sd	s9, 40(sp)                      # 8-byte Folded Spill
   	li	a0, 0
   	li	s3, 1
   	lui	a1, %hi(u)
   	addi	s2, a1, %lo(u)
  -	addi	s1, sp, 16
  -	lui	a1, 171
  -	addiw	a1, a1, -1365
  -	slli	a1, a1, 12
  -	addi	s4, a1, -1365
  +	addi	s4, sp, 16
   	lui	a1, 699051
   	addiw	a1, a1, -1365
  -	slli	s5, a1, 32
  +	slli	s1, a1, 32
   	lui	a1, 838861
   	addiw	a1, a1, -819
  -	slli	s6, a1, 32
  -	li	s7, 6
  +	slli	s5, a1, 32
  +	li	s6, 6
   	lui	a1, 299593
   	slli	a1, a1, 1
  -	addi	s8, a1, 1171
  -	li	s9, 14
  +	addi	s7, a1, 1171
  +	li	s8, 14
   	lui	a1, 149797
  -	addiw	s10, a1, -1755
  -	slli	s11, s10, 32
  +	addiw	a1, a1, -1755
  +	slli	s9, a1, 32
   .LBB24_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
   	slli	a0, a0, 4
  @@ -975,9 +995,9 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.2:                                # %lor.lhs.false
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -989,9 +1009,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.4:                                # %lor.lhs.false19
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1006,7 +1026,7 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1020,7 +1040,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1050,9 +1070,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  +	srliw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
   # %bb.12:                               # %lor.lhs.false90
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1079,7 +1099,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1096,9 +1116,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.18:                               # %lor.lhs.false145
  @@ -1106,16 +1127,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.19:                               # %if.end154
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.20:                               # %lor.lhs.false162
  @@ -1123,7 +1145,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.21:                               # %if.end171
  @@ -1133,9 +1155,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1146,7 +1169,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1156,9 +1179,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1169,7 +1193,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1182,9 +1206,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.26:                               # %lor.lhs.false217
  @@ -1192,16 +1217,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.27:                               # %if.end226
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.28:                               # %lor.lhs.false234
  @@ -1209,7 +1235,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.29:                               # %if.end243
  @@ -1219,11 +1245,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.30:                               # %lor.lhs.false253
  @@ -1231,7 +1258,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1241,11 +1268,12 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.32:                               # %lor.lhs.false270
  @@ -1253,7 +1281,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1266,10 +1294,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.34:                               # %lor.lhs.false289
  @@ -1277,17 +1305,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.35:                               # %if.end298
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.36:                               # %lor.lhs.false306
  @@ -1295,7 +1323,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a0, a0, 1
  -	mul	a0, a0, s8
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.37:                               # %if.end315
  @@ -1305,12 +1333,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.38:                               # %lor.lhs.false325
  @@ -1318,21 +1346,21 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.39:                               # %if.end334
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.40:                               # %lor.lhs.false342
  @@ -1340,9 +1368,9 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a2, a0, 1
  -	mul	a2, a2, s8
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.41:                               # %if.end351
  @@ -1352,9 +1380,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1366,7 +1395,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1377,9 +1406,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1391,7 +1421,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1405,9 +1435,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1422,7 +1453,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1436,9 +1467,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1453,7 +1485,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1505,8 +1537,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1525,8 +1557,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1549,8 +1581,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1571,8 +1603,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1591,8 +1623,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 29
  +	slli	a2, a0, 1
  +	srli	a2, a2, 61
   	addw	a0, a0, a2
   	sraiw	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1600,9 +1632,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	addw	a0, a0, a2
   	sraiw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1610,8 +1642,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1638,9 +1670,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	add	a2, a2, a0
   	andi	a2, a2, -2
   	subw	a0, a0, a2
  @@ -1649,8 +1681,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -2079,20 +2111,18 @@ main:                                   # @main
   	bnez	a1, .LBB24_51
   # %bb.100:                              # %for.end863
   	li	a0, 0
  -	ld	ra, 136(sp)                     # 8-byte Folded Reload
  -	ld	s0, 128(sp)                     # 8-byte Folded Reload
  -	ld	s1, 120(sp)                     # 8-byte Folded Reload
  -	ld	s2, 112(sp)                     # 8-byte Folded Reload
  -	ld	s3, 104(sp)                     # 8-byte Folded Reload
  -	ld	s4, 96(sp)                      # 8-byte Folded Reload
  -	ld	s5, 88(sp)                      # 8-byte Folded Reload
  -	ld	s6, 80(sp)                      # 8-byte Folded Reload
  -	ld	s7, 72(sp)                      # 8-byte Folded Reload
  -	ld	s8, 64(sp)                      # 8-byte Folded Reload
  -	ld	s9, 56(sp)                      # 8-byte Folded Reload
  -	ld	s10, 48(sp)                     # 8-byte Folded Reload
  -	ld	s11, 40(sp)                     # 8-byte Folded Reload
  -	addi	sp, sp, 144
  +	ld	ra, 120(sp)                     # 8-byte Folded Reload
  +	ld	s0, 112(sp)                     # 8-byte Folded Reload
  +	ld	s1, 104(sp)                     # 8-byte Folded Reload
  +	ld	s2, 96(sp)                      # 8-byte Folded Reload
  +	ld	s3, 88(sp)                      # 8-byte Folded Reload
  +	ld	s4, 80(sp)                      # 8-byte Folded Reload
  +	ld	s5, 72(sp)                      # 8-byte Folded Reload
  +	ld	s6, 64(sp)                      # 8-byte Folded Reload
  +	ld	s7, 56(sp)                      # 8-byte Folded Reload
  +	ld	s8, 48(sp)                      # 8-byte Folded Reload
  +	ld	s9, 40(sp)                      # 8-byte Folded Reload
  +	addi	sp, sp, 128
   	ret
   .LBB24_101:                             # %if.then
   	call	abort
  diff --git a/output_rv64imafdc_lp64_Os/20140622-1.s b/output_rv64imafdc_lp64_Os/20140622-1.s
  index e33cce6bdf..6d20c13a92 100644
  --- a/output_rv64imafdc_lp64_Os/20140622-1.s
  +++ b/output_rv64imafdc_lp64_Os/20140622-1.s
  @@ -8,10 +8,12 @@
   test:                                   # @test
   # %bb.0:                                # %entry
   	lui	a1, %hi(p)
  -	lwu	a1, %lo(p)(a1)
  +	lw	a1, %lo(p)(a1)
   	addw	a0, a0, a1
   	slli	a0, a0, 32
   	srli	a0, a0, 32
  +	slli	a1, a1, 32
  +	srli	a1, a1, 32
   	sub	a0, a0, a1
   	ret
   .Lfunc_end0:
  diff --git a/output_rv64imafdc_lp64_Os/pr22061-1.s b/output_rv64imafdc_lp64_Os/pr22061-1.s
  index 141bfd37a9..277b8f7983 100644
  --- a/output_rv64imafdc_lp64_Os/pr22061-1.s
  +++ b/output_rv64imafdc_lp64_Os/pr22061-1.s
  @@ -17,8 +17,10 @@ foo:                                    # @foo
   bar:                                    # @bar
   # %bb.0:                                # %entry
   	lui	a1, %hi(N)
  -	lwu	a1, %lo(N)(a1)
  -	add	a0, a0, a1
  +	lw	a1, %lo(N)(a1)
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	add	a0, a0, a2
   	sb	a1, 0(a0)
   	ret
   .Lfunc_end1:
  diff --git a/output_rv64imafdc_lp64_Os/pr51581-2.s b/output_rv64imafdc_lp64_Os/pr51581-2.s
  index 7ce56aa11e..40ee3b4359 100644
  --- a/output_rv64imafdc_lp64_Os/pr51581-2.s
  +++ b/output_rv64imafdc_lp64_Os/pr51581-2.s
  @@ -44,14 +44,14 @@ f2:                                     # @f2
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB1_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -110,11 +110,13 @@ f4:                                     # @f4
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, 18
   .LBB3_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	subw	a4, a5, a4
  @@ -170,15 +172,15 @@ f6:                                     # @f6
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, 19
   .LBB5_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -210,11 +212,10 @@ f7:                                     # @f7
   	addiw	a6, a3, 1366
   .LBB6_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	sext.w	a5, a4
  -	mul	a5, a5, a6
  +	lw	a4, 0(a1)
  +	mul	a5, a4, a6
   	srli	a5, a5, 32
  -	srli	a3, a4, 31
  +	srliw	a3, a4, 31
   	addw	a3, a3, a5
   	slliw	a5, a3, 1
   	addw	a3, a3, a5
  @@ -239,14 +240,14 @@ f8:                                     # @f8
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB7_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -276,11 +277,10 @@ f9:                                     # @f9
   	li	a6, -18
   .LBB8_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 34
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -306,11 +306,13 @@ f10:                                    # @f10
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, -18
   .LBB9_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	addw	a4, a4, a5
  @@ -339,11 +341,10 @@ f11:                                    # @f11
   	li	a6, -19
   .LBB10_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 35
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -367,15 +368,15 @@ f12:                                    # @f12
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, -19
   .LBB11_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -444,10 +445,9 @@ main:                                   # @main
   	lui	a2, 1
   	lui	a3, 349525
   	addiw	a6, a3, 1366
  -	lui	a4, 171
  +	lui	a4, 699051
   	addiw	a4, a4, -1365
  -	slli	a4, a4, 12
  -	addi	a7, a4, -1365
  +	slli	a7, a4, 32
   .LBB12_3:                               # %for.body5
                                           # =>This Inner Loop Header: Depth=1
   	lw	a5, 0(s0)
  @@ -462,9 +462,10 @@ main:                                   # @main
   	bne	t0, a3, .LBB12_27
   # %bb.4:                                # %lor.lhs.false
                                           #   in Loop: Header=BB12_3 Depth=1
  -	lwu	a3, 0(s1)
  +	lw	a3, 0(s1)
   	lw	t0, 0(a0)
  -	mul	a5, a3, a7
  +	slli	a5, a3, 32
  +	mulhu	a5, a5, a7
   	srli	a5, a5, 33
   	slliw	a4, a5, 1
   	addw	a4, a4, a5
  @@ -491,24 +492,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_7:                               # %for.body22
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.8:                                # %lor.lhs.false29
                                           #   in Loop: Header=BB12_7 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -536,10 +539,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_11:                              # %for.body43
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -553,9 +555,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.12:                               # %lor.lhs.false50
                                           #   in Loop: Header=BB12_11 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  @@ -586,10 +589,9 @@ main:                                   # @main
   	lui	a4, 1
   	lui	a5, 349525
   	addiw	a6, a5, 1366
  -	lui	s1, 171
  +	lui	s1, 699051
   	addiw	s1, s1, -1365
  -	slli	s1, s1, 12
  -	addi	a7, s1, -1365
  +	slli	a7, s1, 32
   .LBB12_15:                              # %for.body64
                                           # =>This Inner Loop Header: Depth=1
   	lw	s0, 0(a2)
  @@ -604,9 +606,10 @@ main:                                   # @main
   	bne	t0, a5, .LBB12_27
   # %bb.16:                               # %lor.lhs.false71
                                           #   in Loop: Header=BB12_15 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t0, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 33
   	slliw	s1, s0, 1
   	addw	s1, s1, s0
  @@ -633,24 +636,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_19:                              # %for.body85
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.20:                               # %lor.lhs.false92
                                           #   in Loop: Header=BB12_19 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -678,10 +683,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_23:                              # %for.body106
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -695,9 +699,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.24:                               # %lor.lhs.false113
                                           #   in Loop: Header=BB12_23 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  diff --git a/output_rv64imafdc_lp64_Os/pr53645.s b/output_rv64imafdc_lp64_Os/pr53645.s
  index 56bd435ece..7c352a0b5d 100644
  --- a/output_rv64imafdc_lp64_Os/pr53645.s
  +++ b/output_rv64imafdc_lp64_Os/pr53645.s
  @@ -188,7 +188,7 @@ sq1428:                                 # @sq1428
   sr1428:                                 # @sr1428
   # %bb.0:                                # %entry
   	lw	a2, 4(a1)
  -	lwu	a3, 8(a1)
  +	lw	a3, 8(a1)
   	lw	a1, 12(a1)
   	slli	a4, a2, 1
   	srli	a4, a4, 62
  @@ -200,7 +200,7 @@ sr1428:                                 # @sr1428
   	add	a4, a4, a1
   	andi	a4, a4, -8
   	subw	a1, a1, a4
  -	srli	a4, a3, 31
  +	srliw	a4, a3, 31
   	add	a4, a4, a3
   	andi	a4, a4, -2
   	subw	a3, a3, a4
  @@ -254,36 +254,44 @@ uq3333:                                 # @uq3333
   	.type	ur3333, at function
   ur3333:                                 # @ur3333
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI9_0)
  -	ld	a3, %lo(.LCPI9_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	srli	a7, a4, 1
  -	andi	a4, a4, -2
  -	addw	a4, a4, a7
  -	subw	a7, a2, a4
  -	mulhu	a4, a1, a3
  -	srli	a2, a4, 1
  -	andi	a4, a4, -2
  -	addw	a2, a2, a4
  -	subw	a1, a1, a2
  -	mulhu	a2, a5, a3
  -	srli	a4, a2, 1
  -	andi	a2, a2, -2
  -	addw	a2, a2, a4
  -	subw	a2, a5, a2
  -	mulhu	a3, a6, a3
  +	lw	t0, 12(a1)
  +	lw	t1, 8(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 4(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 0(a1)
  +	lui	a2, %hi(.LCPI9_0)
  +	ld	a2, %lo(.LCPI9_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 1
   	andi	a3, a3, -2
   	addw	a3, a3, a4
  -	subw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a2, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a7, 0(a0)
  +	subw	a1, a1, a3
  +	mulhu	a3, t2, a2
  +	srli	a4, a3, 1
  +	andi	a3, a3, -2
  +	addw	a3, a3, a4
  +	subw	a3, a5, a3
  +	mulhu	a4, a7, a2
  +	srli	a5, a4, 1
  +	andi	a4, a4, -2
  +	addw	a4, a4, a5
  +	subw	a4, t1, a4
  +	mulhu	a2, a6, a2
  +	srli	a5, a2, 1
  +	andi	a2, a2, -2
  +	addw	a2, a2, a5
  +	subw	a2, t0, a2
  +	sw	a2, 12(a0)
  +	sw	a4, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end9:
   	.size	ur3333, .Lfunc_end9-ur3333
  @@ -420,36 +428,44 @@ uq6565:                                 # @uq6565
   	.type	ur6565, at function
   ur6565:                                 # @ur6565
   # %bb.0:                                # %entry
  -	lwu	a2, 4(a1)
  -	lui	a3, %hi(.LCPI13_0)
  -	ld	a3, %lo(.LCPI13_0)(a3)
  -	lwu	a6, 8(a1)
  -	lwu	a7, 0(a1)
  -	lwu	a1, 12(a1)
  -	mulhu	a4, a2, a3
  -	srli	a5, a4, 2
  -	andi	a4, a4, -4
  -	addw	a4, a4, a5
  -	subw	a2, a2, a4
  -	mulhu	a3, a1, a3
  +	lw	t0, 8(a1)
  +	lw	t1, 0(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 12(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 4(a1)
  +	lui	a2, %hi(.LCPI13_0)
  +	ld	a2, %lo(.LCPI13_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 2
  -	lui	a5, %hi(.LCPI13_1)
  -	ld	a5, %lo(.LCPI13_1)(a5)
   	andi	a3, a3, -4
   	addw	a3, a3, a4
   	subw	a1, a1, a3
  -	mulhu	a3, a7, a5
  +	mulhu	a2, t2, a2
  +	srli	a3, a2, 2
  +	lui	a4, %hi(.LCPI13_1)
  +	ld	a4, %lo(.LCPI13_1)(a4)
  +	andi	a2, a2, -4
  +	addw	a2, a2, a3
  +	subw	a2, a5, a2
  +	mulhu	a3, a7, a4
   	srli	a3, a3, 2
  -	li	a4, 6
  -	mulw	a3, a3, a4
  -	subw	a3, a7, a3
  -	mulhu	a5, a6, a5
  -	srli	a5, a5, 2
  -	mulw	a4, a5, a4
  -	subw	a4, a6, a4
  -	sw	a1, 12(a0)
  +	li	a5, 6
  +	mulw	a3, a3, a5
  +	subw	a3, t1, a3
  +	mulhu	a4, a6, a4
  +	srli	a4, a4, 2
  +	mulw	a4, a4, a5
  +	subw	a4, t0, a4
  +	sw	a2, 12(a0)
   	sw	a4, 8(a0)
  -	sw	a2, 4(a0)
  +	sw	a1, 4(a0)
   	sw	a3, 0(a0)
   	ret
   .Lfunc_end13:
  @@ -592,48 +608,50 @@ uq1414146:                              # @uq1414146
   	.section	.sdata,"aw", at progbits
   	.p2align	3                               # -- Begin function ur1414146
   .LCPI17_0:
  -	.quad	5270498306774157605             # 0x4924924924924925
  -.LCPI17_1:
   	.quad	-6148914691236517205            # 0xaaaaaaaaaaaaaaab
  +.LCPI17_1:
  +	.quad	5270498306774157605             # 0x4924924924924925
   	.text
   	.globl	ur1414146
   	.p2align	1
   	.type	ur1414146, at function
   ur1414146:                              # @ur1414146
   # %bb.0:                                # %entry
  -	lwu	a6, 12(a1)
  -	lwu	a3, 0(a1)
  -	lui	a4, %hi(.LCPI17_0)
  -	ld	a4, %lo(.LCPI17_0)(a4)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	srli	a2, a3, 1
  -	mulhu	a2, a2, a4
  -	srli	a2, a2, 1
  -	li	a7, 14
  +	lw	a6, 8(a1)
  +	lw	a3, 4(a1)
  +	lw	a4, 12(a1)
  +	lui	a5, %hi(.LCPI17_0)
  +	ld	a5, %lo(.LCPI17_0)(a5)
  +	lw	a1, 0(a1)
  +	slli	a2, a4, 32
  +	srli	a2, a2, 32
  +	mulhu	a2, a2, a5
  +	srli	a2, a2, 2
  +	li	a7, 6
  +	lui	a5, %hi(.LCPI17_1)
  +	ld	a5, %lo(.LCPI17_1)(a5)
   	mulw	a2, a2, a7
  -	subw	a2, a3, a2
  -	srli	a3, a1, 1
  -	mulhu	a3, a3, a4
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a1, a1, a3
  -	srli	a3, a5, 1
  -	mulhu	a3, a3, a4
  -	lui	a4, %hi(.LCPI17_1)
  -	ld	a4, %lo(.LCPI17_1)(a4)
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a3, a5, a3
  -	mulhu	a4, a6, a4
  -	srli	a4, a4, 2
  -	li	a5, 6
  -	mulw	a4, a4, a5
  -	subw	a4, a6, a4
  -	sw	a4, 12(a0)
  -	sw	a3, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	subw	a7, a4, a2
  +	srliw	a4, a1, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	li	a2, 14
  +	mulw	a4, a4, a2
  +	subw	a1, a1, a4
  +	srliw	a4, a3, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a4, a4, a2
  +	subw	a3, a3, a4
  +	srliw	a4, a6, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a2, a4, a2
  +	subw	a2, a6, a2
  +	sw	a2, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
  +	sw	a7, 12(a0)
   	ret
   .Lfunc_end17:
   	.size	ur1414146, .Lfunc_end17-ur1414146
  @@ -788,48 +806,56 @@ uq7777:                                 # @uq7777
   	.type	ur7777, at function
   ur7777:                                 # @ur7777
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI21_0)
  -	ld	a3, %lo(.LCPI21_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a7, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	sub	a5, a2, a4
  -	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a2, a2, a4
  -	mulhu	a4, a1, a3
  -	sub	a5, a1, a4
  +	lw	a6, 12(a1)
  +	lw	a7, 8(a1)
  +	slli	a4, a6, 32
  +	lw	t2, 4(a1)
  +	srli	t0, a4, 32
  +	slli	a2, a7, 32
  +	srli	t1, a2, 32
  +	slli	a3, t2, 32
  +	lw	a1, 0(a1)
  +	lui	a4, %hi(.LCPI21_0)
  +	ld	a4, %lo(.LCPI21_0)(a4)
  +	srli	a3, a3, 32
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	mulhu	a5, a2, a4
  +	sub	a2, a2, a5
  +	srli	a2, a2, 1
  +	add	a2, a2, a5
  +	srli	a2, a2, 2
  +	slliw	a5, a2, 3
  +	subw	a2, a2, a5
  +	addw	a1, a1, a2
  +	mulhu	a2, a3, a4
  +	sub	a3, a3, a2
  +	srli	a3, a3, 1
  +	add	a2, a2, a3
  +	srli	a2, a2, 2
  +	slliw	a3, a2, 3
  +	subw	a2, a2, a3
  +	addw	a2, t2, a2
  +	mulhu	a3, t1, a4
  +	sub	a5, t1, a3
   	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a1, a1, a4
  -	mulhu	a4, a7, a3
  -	sub	a5, a7, a4
  +	add	a3, a3, a5
  +	srli	a3, a3, 2
  +	slliw	a5, a3, 3
  +	subw	a3, a3, a5
  +	addw	a3, a7, a3
  +	mulhu	a4, t0, a4
  +	sub	a5, t0, a4
   	srli	a5, a5, 1
   	add	a4, a4, a5
   	srli	a4, a4, 2
   	slliw	a5, a4, 3
   	subw	a4, a4, a5
  -	addw	a4, a7, a4
  -	mulhu	a3, a6, a3
  -	sub	a5, a6, a3
  -	srli	a5, a5, 1
  -	add	a3, a3, a5
  -	srli	a3, a3, 2
  -	slliw	a5, a3, 3
  -	subw	a3, a3, a5
  -	addw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a4, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	addw	a4, a6, a4
  +	sw	a4, 12(a0)
  +	sw	a3, 8(a0)
  +	sw	a2, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end21:
   	.size	ur7777, .Lfunc_end21-ur7777
  @@ -931,43 +957,37 @@ sr7777:                                 # @sr7777
   	.type	main, at function
   main:                                   # @main
   # %bb.0:                                # %entry
  -	addi	sp, sp, -144
  -	sd	ra, 136(sp)                     # 8-byte Folded Spill
  -	sd	s0, 128(sp)                     # 8-byte Folded Spill
  -	sd	s1, 120(sp)                     # 8-byte Folded Spill
  -	sd	s2, 112(sp)                     # 8-byte Folded Spill
  -	sd	s3, 104(sp)                     # 8-byte Folded Spill
  -	sd	s4, 96(sp)                      # 8-byte Folded Spill
  -	sd	s5, 88(sp)                      # 8-byte Folded Spill
  -	sd	s6, 80(sp)                      # 8-byte Folded Spill
  -	sd	s7, 72(sp)                      # 8-byte Folded Spill
  -	sd	s8, 64(sp)                      # 8-byte Folded Spill
  -	sd	s9, 56(sp)                      # 8-byte Folded Spill
  -	sd	s10, 48(sp)                     # 8-byte Folded Spill
  -	sd	s11, 40(sp)                     # 8-byte Folded Spill
  +	addi	sp, sp, -128
  +	sd	ra, 120(sp)                     # 8-byte Folded Spill
  +	sd	s0, 112(sp)                     # 8-byte Folded Spill
  +	sd	s1, 104(sp)                     # 8-byte Folded Spill
  +	sd	s2, 96(sp)                      # 8-byte Folded Spill
  +	sd	s3, 88(sp)                      # 8-byte Folded Spill
  +	sd	s4, 80(sp)                      # 8-byte Folded Spill
  +	sd	s5, 72(sp)                      # 8-byte Folded Spill
  +	sd	s6, 64(sp)                      # 8-byte Folded Spill
  +	sd	s7, 56(sp)                      # 8-byte Folded Spill
  +	sd	s8, 48(sp)                      # 8-byte Folded Spill
  +	sd	s9, 40(sp)                      # 8-byte Folded Spill
   	li	a0, 0
   	li	s3, 1
   	lui	a1, %hi(u)
   	addi	s2, a1, %lo(u)
  -	addi	s1, sp, 16
  -	lui	a1, 171
  -	addiw	a1, a1, -1365
  -	slli	a1, a1, 12
  -	addi	s4, a1, -1365
  +	addi	s4, sp, 16
   	lui	a1, 699051
   	addiw	a1, a1, -1365
  -	slli	s5, a1, 32
  +	slli	s1, a1, 32
   	lui	a1, 838861
   	addiw	a1, a1, -819
  -	slli	s6, a1, 32
  -	li	s7, 6
  +	slli	s5, a1, 32
  +	li	s6, 6
   	lui	a1, 299593
   	slli	a1, a1, 1
  -	addi	s8, a1, 1171
  -	li	s9, 14
  +	addi	s7, a1, 1171
  +	li	s8, 14
   	lui	a1, 149797
  -	addiw	s10, a1, -1755
  -	slli	s11, s10, 32
  +	addiw	a1, a1, -1755
  +	slli	s9, a1, 32
   .LBB24_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
   	slli	a0, a0, 4
  @@ -975,9 +995,9 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.2:                                # %lor.lhs.false
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -989,9 +1009,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.4:                                # %lor.lhs.false19
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1006,7 +1026,7 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1020,7 +1040,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1050,9 +1070,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  +	srliw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
   # %bb.12:                               # %lor.lhs.false90
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1079,7 +1099,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1096,9 +1116,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.18:                               # %lor.lhs.false145
  @@ -1106,16 +1127,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.19:                               # %if.end154
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.20:                               # %lor.lhs.false162
  @@ -1123,7 +1145,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.21:                               # %if.end171
  @@ -1133,9 +1155,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1146,7 +1169,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1156,9 +1179,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1169,7 +1193,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1182,9 +1206,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.26:                               # %lor.lhs.false217
  @@ -1192,16 +1217,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.27:                               # %if.end226
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.28:                               # %lor.lhs.false234
  @@ -1209,7 +1235,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.29:                               # %if.end243
  @@ -1219,11 +1245,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.30:                               # %lor.lhs.false253
  @@ -1231,7 +1258,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1241,11 +1268,12 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.32:                               # %lor.lhs.false270
  @@ -1253,7 +1281,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1266,10 +1294,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.34:                               # %lor.lhs.false289
  @@ -1277,17 +1305,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.35:                               # %if.end298
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.36:                               # %lor.lhs.false306
  @@ -1295,7 +1323,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a0, a0, 1
  -	mul	a0, a0, s8
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.37:                               # %if.end315
  @@ -1305,12 +1333,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.38:                               # %lor.lhs.false325
  @@ -1318,21 +1346,21 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.39:                               # %if.end334
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.40:                               # %lor.lhs.false342
  @@ -1340,9 +1368,9 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a2, a0, 1
  -	mul	a2, a2, s8
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.41:                               # %if.end351
  @@ -1352,9 +1380,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1366,7 +1395,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1377,9 +1406,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1391,7 +1421,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1405,9 +1435,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1422,7 +1453,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1436,9 +1467,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1453,7 +1485,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1505,8 +1537,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1525,8 +1557,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1549,8 +1581,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1571,8 +1603,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1591,8 +1623,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 29
  +	slli	a2, a0, 1
  +	srli	a2, a2, 61
   	addw	a0, a0, a2
   	sraiw	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1600,9 +1632,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	addw	a0, a0, a2
   	sraiw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1610,8 +1642,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1638,9 +1670,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	add	a2, a2, a0
   	andi	a2, a2, -2
   	subw	a0, a0, a2
  @@ -1649,8 +1681,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -2079,20 +2111,18 @@ main:                                   # @main
   	bnez	a1, .LBB24_51
   # %bb.100:                              # %for.end863
   	li	a0, 0
  -	ld	ra, 136(sp)                     # 8-byte Folded Reload
  -	ld	s0, 128(sp)                     # 8-byte Folded Reload
  -	ld	s1, 120(sp)                     # 8-byte Folded Reload
  -	ld	s2, 112(sp)                     # 8-byte Folded Reload
  -	ld	s3, 104(sp)                     # 8-byte Folded Reload
  -	ld	s4, 96(sp)                      # 8-byte Folded Reload
  -	ld	s5, 88(sp)                      # 8-byte Folded Reload
  -	ld	s6, 80(sp)                      # 8-byte Folded Reload
  -	ld	s7, 72(sp)                      # 8-byte Folded Reload
  -	ld	s8, 64(sp)                      # 8-byte Folded Reload
  -	ld	s9, 56(sp)                      # 8-byte Folded Reload
  -	ld	s10, 48(sp)                     # 8-byte Folded Reload
  -	ld	s11, 40(sp)                     # 8-byte Folded Reload
  -	addi	sp, sp, 144
  +	ld	ra, 120(sp)                     # 8-byte Folded Reload
  +	ld	s0, 112(sp)                     # 8-byte Folded Reload
  +	ld	s1, 104(sp)                     # 8-byte Folded Reload
  +	ld	s2, 96(sp)                      # 8-byte Folded Reload
  +	ld	s3, 88(sp)                      # 8-byte Folded Reload
  +	ld	s4, 80(sp)                      # 8-byte Folded Reload
  +	ld	s5, 72(sp)                      # 8-byte Folded Reload
  +	ld	s6, 64(sp)                      # 8-byte Folded Reload
  +	ld	s7, 56(sp)                      # 8-byte Folded Reload
  +	ld	s8, 48(sp)                      # 8-byte Folded Reload
  +	ld	s9, 40(sp)                      # 8-byte Folded Reload
  +	addi	sp, sp, 128
   	ret
   .LBB24_101:                             # %if.then
   	call	abort
  diff --git a/output_rv64imafdc_lp64_Oz/20140622-1.s b/output_rv64imafdc_lp64_Oz/20140622-1.s
  index e33cce6bdf..6d20c13a92 100644
  --- a/output_rv64imafdc_lp64_Oz/20140622-1.s
  +++ b/output_rv64imafdc_lp64_Oz/20140622-1.s
  @@ -8,10 +8,12 @@
   test:                                   # @test
   # %bb.0:                                # %entry
   	lui	a1, %hi(p)
  -	lwu	a1, %lo(p)(a1)
  +	lw	a1, %lo(p)(a1)
   	addw	a0, a0, a1
   	slli	a0, a0, 32
   	srli	a0, a0, 32
  +	slli	a1, a1, 32
  +	srli	a1, a1, 32
   	sub	a0, a0, a1
   	ret
   .Lfunc_end0:
  diff --git a/output_rv64imafdc_lp64_Oz/pr22061-1.s b/output_rv64imafdc_lp64_Oz/pr22061-1.s
  index 141bfd37a9..277b8f7983 100644
  --- a/output_rv64imafdc_lp64_Oz/pr22061-1.s
  +++ b/output_rv64imafdc_lp64_Oz/pr22061-1.s
  @@ -17,8 +17,10 @@ foo:                                    # @foo
   bar:                                    # @bar
   # %bb.0:                                # %entry
   	lui	a1, %hi(N)
  -	lwu	a1, %lo(N)(a1)
  -	add	a0, a0, a1
  +	lw	a1, %lo(N)(a1)
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	add	a0, a0, a2
   	sb	a1, 0(a0)
   	ret
   .Lfunc_end1:
  diff --git a/output_rv64imafdc_lp64d_O0/20140622-1.s b/output_rv64imafdc_lp64d_O0/20140622-1.s
  index fb866edf04..6de9373fe4 100644
  --- a/output_rv64imafdc_lp64d_O0/20140622-1.s
  +++ b/output_rv64imafdc_lp64d_O0/20140622-1.s
  @@ -14,11 +14,13 @@ test:                                   # @test
                                           # kill: def $x11 killed $x10
   	sw	a0, -20(s0)
   	lui	a0, %hi(p)
  -	lwu	a1, %lo(p)(a0)
  +	lw	a1, %lo(p)(a0)
   	lw	a0, -20(s0)
   	addw	a0, a0, a1
   	slli	a0, a0, 32
   	srli	a0, a0, 32
  +	slli	a1, a1, 32
  +	srli	a1, a1, 32
   	sub	a0, a0, a1
   	ld	ra, 24(sp)                      # 8-byte Folded Reload
   	ld	s0, 16(sp)                      # 8-byte Folded Reload
  diff --git a/output_rv64imafdc_lp64d_O0/loop-2.s b/output_rv64imafdc_lp64d_O0/loop-2.s
  index d1868065b9..8589e2f437 100644
  --- a/output_rv64imafdc_lp64d_O0/loop-2.s
  +++ b/output_rv64imafdc_lp64d_O0/loop-2.s
  @@ -24,11 +24,12 @@ f:                                      # @f
   	j	.LBB0_2
   .LBB0_2:                                # %for.body
                                           #   in Loop: Header=BB0_1 Depth=1
  -	lwu	a1, -28(s0)
  -	addiw	a0, a1, -2
  -	slli	a2, a1, 2
  +	lw	a2, -28(s0)
  +	addiw	a0, a2, -2
   	lui	a1, %hi(a)
   	addi	a1, a1, %lo(a)
  +	slli	a2, a2, 32
  +	srli	a2, a2, 30
   	add	a1, a1, a2
   	sw	a0, 0(a1)
   	j	.LBB0_3
  diff --git a/output_rv64imafdc_lp64d_O0/memcpy-1.s b/output_rv64imafdc_lp64d_O0/memcpy-1.s
  index 88ddd9a854..a996ff67b2 100644
  --- a/output_rv64imafdc_lp64d_O0/memcpy-1.s
  +++ b/output_rv64imafdc_lp64d_O0/memcpy-1.s
  @@ -53,11 +53,13 @@ main:                                   # @main
   	j	.LBB1_2
   .LBB1_2:                                # %for.body
                                           #   in Loop: Header=BB1_1 Depth=1
  -	lwu	a0, -32(s0)
  +	lw	a0, -32(s0)
  +	slli	a1, a0, 32
  +	srli	a2, a1, 32
   	lui	a1, 1048544
   	addiw	a1, a1, -32
   	add	a1, a1, s0
  -	add	a1, a1, a0
  +	add	a1, a1, a2
   	sb	a0, 0(a1)
   	lwu	a1, -32(s0)
   	lui	a0, 1048512
  @@ -93,11 +95,13 @@ main:                                   # @main
   	j	.LBB1_6
   .LBB1_6:                                # %for.body7
                                           #   in Loop: Header=BB1_5 Depth=1
  -	lwu	a1, -32(s0)
  +	lw	a1, -32(s0)
  +	slli	a0, a1, 32
  +	srli	a2, a0, 32
   	lui	a0, 1048512
   	addiw	a0, a0, -32
   	add	a0, a0, s0
  -	add	a0, a0, a1
  +	add	a0, a0, a2
   	lbu	a0, 0(a0)
   	andi	a1, a1, 255
   	beq	a0, a1, .LBB1_8
  @@ -171,11 +175,13 @@ main:                                   # @main
   	j	.LBB1_18
   .LBB1_18:                               # %for.body38
                                           #   in Loop: Header=BB1_17 Depth=1
  -	lwu	a1, -32(s0)
  +	lw	a1, -32(s0)
  +	slli	a0, a1, 32
  +	srli	a2, a0, 32
   	lui	a0, 1048512
   	addiw	a0, a0, -32
   	add	a0, a0, s0
  -	add	a0, a0, a1
  +	add	a0, a0, a2
   	lbu	a0, 0(a0)
   	andi	a1, a1, 255
   	beq	a0, a1, .LBB1_20
  @@ -256,11 +262,13 @@ main:                                   # @main
   	j	.LBB1_30
   .LBB1_30:                               # %for.body71
                                           #   in Loop: Header=BB1_29 Depth=1
  -	lwu	a1, -32(s0)
  +	lw	a1, -32(s0)
  +	slli	a0, a1, 32
  +	srli	a2, a0, 32
   	lui	a0, 1048512
   	addiw	a0, a0, -32
   	add	a0, a0, s0
  -	add	a0, a0, a1
  +	add	a0, a0, a2
   	lbu	a0, 0(a0)
   	andi	a1, a1, 255
   	beq	a0, a1, .LBB1_32
  @@ -323,11 +331,13 @@ main:                                   # @main
   	j	.LBB1_36
   .LBB1_36:                               # %for.body91
                                           #   in Loop: Header=BB1_35 Depth=1
  -	lwu	a1, -32(s0)
  +	lw	a1, -32(s0)
  +	slli	a0, a1, 32
  +	srli	a2, a0, 32
   	lui	a0, 1048512
   	addiw	a0, a0, -32
   	add	a0, a0, s0
  -	add	a0, a0, a1
  +	add	a0, a0, a2
   	lbu	a0, 0(a0)
   	andi	a1, a1, 255
   	beq	a0, a1, .LBB1_38
  diff --git a/output_rv64imafdc_lp64d_O0/pr22061-1.s b/output_rv64imafdc_lp64d_O0/pr22061-1.s
  index 8afd95f7b7..acaf8a29cd 100644
  --- a/output_rv64imafdc_lp64d_O0/pr22061-1.s
  +++ b/output_rv64imafdc_lp64d_O0/pr22061-1.s
  @@ -29,9 +29,11 @@ bar:                                    # @bar
   	addi	s0, sp, 32
   	sd	a0, -24(s0)
   	lui	a0, %hi(N)
  -	lwu	a0, %lo(N)(a0)
  +	lw	a0, %lo(N)(a0)
  +	slli	a1, a0, 32
  +	srli	a2, a1, 32
   	ld	a1, -24(s0)
  -	add	a1, a1, a0
  +	add	a1, a1, a2
   	sb	a0, 0(a1)
   	ld	ra, 24(sp)                      # 8-byte Folded Reload
   	ld	s0, 16(sp)                      # 8-byte Folded Reload
  diff --git a/output_rv64imafdc_lp64d_O0/pr37573.s b/output_rv64imafdc_lp64d_O0/pr37573.s
  index 48df844a59..4c5b46eea9 100644
  --- a/output_rv64imafdc_lp64d_O0/pr37573.s
  +++ b/output_rv64imafdc_lp64d_O0/pr37573.s
  @@ -88,7 +88,7 @@ bar:                                    # @bar
   	lui	a0, 1048575
   	addiw	a0, a0, 1540
   	add	a0, a0, s0
  -	lwu	a2, 0(a0)
  +	lw	a2, 0(a0)
   	lui	a0, 1048575
   	addiw	a0, a0, 1528
   	add	a0, a0, s0
  @@ -97,14 +97,15 @@ bar:                                    # @bar
   	slli	a0, a0, 32
   	srli	a0, a0, 30
   	add	a0, a0, a1
  -	lwu	a3, 0(a0)
  -	srli	a0, a3, 30
  +	lw	a3, 0(a0)
  +	srliw	a0, a3, 30
   	xor	a0, a0, a3
   	lui	a3, 442489
   	addiw	a3, a3, -1691
   	mulw	a0, a0, a3
   	addw	a0, a0, a2
  -	slli	a2, a2, 2
  +	slli	a2, a2, 32
  +	srli	a2, a2, 30
   	add	a1, a1, a2
   	sw	a0, 0(a1)
   	j	.LBB1_3
  @@ -191,15 +192,16 @@ foo:                                    # @foo
   .LBB2_3:                                # %for.body
                                           #   in Loop: Header=BB2_2 Depth=1
   	ld	a2, -40(s0)
  -	lwu	a3, -44(s0)
  -	slli	a0, a3, 2
  +	lw	a3, -44(s0)
  +	slli	a0, a3, 32
  +	srli	a0, a0, 30
   	add	a1, a2, a0
   	lw	a5, 0(a1)
   	addiw	a0, a3, 1
   	slli	a0, a0, 32
   	srli	a0, a0, 30
   	add	a0, a0, a2
  -	lwu	a4, 0(a0)
  +	lw	a4, 0(a0)
   	xor	a0, a5, a4
   	lui	a6, 524288
   	addiw	a6, a6, -2
  @@ -236,26 +238,26 @@ foo:                                    # @foo
   	sd	a1, 0(a2)
   	lw	a0, 0(a0)
   	sw	a0, -28(s0)
  -	lwu	a0, -28(s0)
  -	srli	a1, a0, 11
  +	lw	a0, -28(s0)
  +	srliw	a1, a0, 11
   	xor	a0, a0, a1
   	sw	a0, -28(s0)
  -	lwu	a0, -28(s0)
  +	lw	a0, -28(s0)
   	lui	a1, 5030
   	addiw	a1, a1, -1875
   	and	a1, a1, a0
   	slli	a1, a1, 7
   	xor	a0, a0, a1
   	sw	a0, -28(s0)
  -	lwu	a0, -28(s0)
  +	lw	a0, -28(s0)
   	lui	a1, 30
   	addiw	a1, a1, -116
   	and	a1, a1, a0
   	slli	a1, a1, 15
   	xor	a0, a0, a1
   	sw	a0, -28(s0)
  -	lwu	a0, -28(s0)
  -	srli	a1, a0, 18
  +	lw	a0, -28(s0)
  +	srliw	a1, a0, 18
   	xor	a0, a0, a1
   	sw	a0, -28(s0)
   	lwu	a0, -28(s0)
  diff --git a/output_rv64imafdc_lp64d_O0/pr40493.s b/output_rv64imafdc_lp64d_O0/pr40493.s
  index de6fe0e223..29149b1f4e 100644
  --- a/output_rv64imafdc_lp64d_O0/pr40493.s
  +++ b/output_rv64imafdc_lp64d_O0/pr40493.s
  @@ -52,8 +52,9 @@ main:                                   # @main
   .LBB0_1:                                # %if.then
   	call	abort
   .LBB0_2:                                # %if.end
  -	lhu	a0, -62(s0)
  -	andi	a0, a0, 1
  +	lw	a0, -64(s0)
  +	slli	a0, a0, 47
  +	srli	a0, a0, 63
   	beqz	a0, .LBB0_4
   	j	.LBB0_3
   .LBB0_3:                                # %if.then15
  diff --git a/output_rv64imafdc_lp64d_O0/pr51581-2.s b/output_rv64imafdc_lp64d_O0/pr51581-2.s
  index 0a104e0d42..29103a43ae 100644
  --- a/output_rv64imafdc_lp64d_O0/pr51581-2.s
  +++ b/output_rv64imafdc_lp64d_O0/pr51581-2.s
  @@ -83,12 +83,12 @@ f2:                                     # @f2
   	lui	a0, %hi(b)
   	addi	a0, a0, %lo(b)
   	add	a0, a0, a2
  -	lwu	a0, 0(a0)
  -	lui	a1, 171
  -	addiw	a1, a1, -1365
  -	slli	a1, a1, 12
  -	addi	a1, a1, -1365
  -	mul	a1, a0, a1
  +	lw	a0, 0(a0)
  +	slli	a1, a0, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a1, a1, a3
   	srli	a3, a1, 33
   	slliw	a1, a3, 1
   	addw	a1, a1, a3
  @@ -193,10 +193,12 @@ f4:                                     # @f4
   	lui	a0, %hi(b)
   	addi	a0, a0, %lo(b)
   	add	a0, a0, a2
  -	lwu	a0, 0(a0)
  -	lui	a1, 233017
  -	addiw	a1, a1, -455
  -	mul	a1, a0, a1
  +	lw	a0, 0(a0)
  +	slli	a1, a0, 32
  +	lui	a3, 233017
  +	addiw	a3, a3, -455
  +	slli	a3, a3, 32
  +	mulhu	a1, a1, a3
   	srli	a1, a1, 34
   	li	a3, 18
   	mulw	a1, a1, a3
  @@ -301,12 +303,12 @@ f6:                                     # @f6
   	lui	a0, %hi(b)
   	addi	a0, a0, %lo(b)
   	add	a0, a0, a2
  -	lwu	a0, 0(a0)
  -	lui	a1, 175
  -	addiw	a1, a1, 647
  -	slli	a1, a1, 12
  -	addi	a1, a1, -1077
  -	mul	a1, a0, a1
  +	lw	a0, 0(a0)
  +	slli	a1, a0, 32
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a3, a3, 32
  +	mulhu	a1, a1, a3
   	srli	a3, a1, 32
   	subw	a1, a0, a3
   	srliw	a1, a1, 1
  @@ -814,12 +816,12 @@ main:                                   # @main
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 33
   	slliw	a2, a3, 1
   	addw	a2, a2, a3
  @@ -884,10 +886,12 @@ main:                                   # @main
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 233017
  -	addiw	a2, a2, -455
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 233017
  +	addiw	a3, a3, -455
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 34
   	li	a3, 18
   	mulw	a2, a2, a3
  @@ -952,12 +956,12 @@ main:                                   # @main
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 175
  -	addiw	a2, a2, 647
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1077
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 32
   	subw	a2, a1, a3
   	srliw	a2, a2, 1
  @@ -1026,12 +1030,12 @@ main:                                   # @main
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 33
   	slliw	a2, a3, 1
   	addw	a2, a2, a3
  @@ -1096,10 +1100,12 @@ main:                                   # @main
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 233017
  -	addiw	a2, a2, -455
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 233017
  +	addiw	a3, a3, -455
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 34
   	li	a3, 18
   	mulw	a2, a2, a3
  @@ -1164,12 +1170,12 @@ main:                                   # @main
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 175
  -	addiw	a2, a2, 647
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1077
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 32
   	subw	a2, a1, a3
   	srliw	a2, a2, 1
  diff --git a/output_rv64imafdc_lp64d_O0/pr53645.s b/output_rv64imafdc_lp64d_O0/pr53645.s
  index 9f6f143909..854ac29016 100644
  --- a/output_rv64imafdc_lp64d_O0/pr53645.s
  +++ b/output_rv64imafdc_lp64d_O0/pr53645.s
  @@ -1372,12 +1372,12 @@ main:                                   # @main
   	lw	a2, -100(s0)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 33
   	slliw	a2, a3, 1
   	addw	a2, a2, a3
  @@ -1392,12 +1392,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 12(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 12(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 33
   	slliw	a2, a3, 1
   	addw	a2, a2, a3
  @@ -1417,12 +1417,12 @@ main:                                   # @main
   	addi	a1, a1, %lo(u)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 8(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 33
   	slliw	a2, a3, 1
   	addw	a2, a2, a3
  @@ -1437,12 +1437,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 4(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 4(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 33
   	slliw	a2, a3, 1
   	addw	a2, a2, a3
  @@ -1552,12 +1552,12 @@ main:                                   # @main
   	lw	a2, -100(s0)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 34
   	li	a3, 6
   	mulw	a2, a2, a3
  @@ -1572,12 +1572,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 12(a1)
  -	lui	a2, 205
  -	addiw	a2, a2, -819
  -	slli	a2, a2, 12
  -	addi	a2, a2, -819
  -	mul	a2, a1, a2
  +	lw	a1, 12(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 838861
  +	addiw	a3, a3, -819
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 34
   	slliw	a2, a3, 2
   	addw	a2, a2, a3
  @@ -1597,12 +1597,12 @@ main:                                   # @main
   	addi	a1, a1, %lo(u)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 8(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 34
   	li	a3, 6
   	mulw	a2, a2, a3
  @@ -1617,12 +1617,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 4(a1)
  -	lui	a2, 205
  -	addiw	a2, a2, -819
  -	slli	a2, a2, 12
  -	addi	a2, a2, -819
  -	mul	a2, a1, a2
  +	lw	a1, 4(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 838861
  +	addiw	a3, a3, -819
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 34
   	slliw	a2, a3, 2
   	addw	a2, a2, a3
  @@ -1732,8 +1732,8 @@ main:                                   # @main
   	lw	a2, -100(s0)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	srli	a2, a1, 1
  +	lw	a1, 0(a1)
  +	srliw	a2, a1, 1
   	lui	a3, 299593
   	slli	a3, a3, 1
   	addi	a3, a3, 1171
  @@ -1752,12 +1752,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 12(a1)
  -	lui	a2, 171
  -	addiw	a2, a2, -1365
  -	slli	a2, a2, 12
  -	addi	a2, a2, -1365
  -	mul	a2, a1, a2
  +	lw	a1, 12(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 699051
  +	addiw	a3, a3, -1365
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 34
   	li	a3, 6
   	mulw	a2, a2, a3
  @@ -1777,8 +1777,8 @@ main:                                   # @main
   	addi	a1, a1, %lo(u)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	srli	a2, a1, 1
  +	lw	a1, 8(a1)
  +	srliw	a2, a1, 1
   	lui	a3, 299593
   	slli	a3, a3, 1
   	addi	a3, a3, 1171
  @@ -1797,8 +1797,8 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 4(a1)
  -	srli	a2, a1, 1
  +	lw	a1, 4(a1)
  +	srliw	a2, a1, 1
   	lui	a3, 299593
   	slli	a3, a3, 1
   	addi	a3, a3, 1171
  @@ -1828,10 +1828,12 @@ main:                                   # @main
   	lw	a2, -100(s0)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 32
   	subw	a1, a1, a2
   	srliw	a1, a1, 1
  @@ -1847,10 +1849,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 12(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 12(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 32
   	subw	a1, a1, a2
   	srliw	a1, a1, 1
  @@ -1871,10 +1875,12 @@ main:                                   # @main
   	addi	a1, a1, %lo(u)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 8(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 32
   	subw	a1, a1, a2
   	srliw	a1, a1, 1
  @@ -1890,10 +1896,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 4(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 4(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 32
   	subw	a1, a1, a2
   	srliw	a1, a1, 1
  @@ -1920,10 +1928,12 @@ main:                                   # @main
   	lw	a2, -100(s0)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 0(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 0(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 32
   	subw	a2, a1, a3
   	srliw	a2, a2, 1
  @@ -1942,10 +1952,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 12(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 12(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 32
   	subw	a2, a1, a3
   	srliw	a2, a2, 1
  @@ -1969,10 +1981,12 @@ main:                                   # @main
   	addi	a1, a1, %lo(u)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 8(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 32
   	subw	a2, a1, a3
   	srliw	a2, a2, 1
  @@ -1991,10 +2005,12 @@ main:                                   # @main
   	lui	a1, %hi(u)
   	addi	a1, a1, %lo(u)
   	add	a1, a1, a2
  -	lwu	a1, 4(a1)
  -	lui	a2, 149797
  -	addiw	a2, a2, -1755
  -	mul	a2, a1, a2
  +	lw	a1, 4(a1)
  +	slli	a2, a1, 32
  +	lui	a3, 149797
  +	addiw	a3, a3, -1755
  +	slli	a3, a3, 32
  +	mulhu	a2, a2, a3
   	srli	a3, a2, 32
   	subw	a2, a1, a3
   	srliw	a2, a2, 1
  @@ -2231,8 +2247,8 @@ main:                                   # @main
   	addi	a1, a1, %lo(s)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	srli	a2, a1, 31
  +	lw	a1, 8(a1)
  +	srliw	a2, a1, 31
   	addw	a1, a1, a2
   	sraiw	a1, a1, 1
   	bne	a0, a1, .LBB24_95
  @@ -2297,8 +2313,8 @@ main:                                   # @main
   	addi	a1, a1, %lo(s)
   	slli	a2, a2, 4
   	add	a1, a1, a2
  -	lwu	a1, 8(a1)
  -	srli	a2, a1, 31
  +	lw	a1, 8(a1)
  +	srliw	a2, a1, 31
   	add	a2, a2, a1
   	andi	a2, a2, -2
   	subw	a1, a1, a2
  diff --git a/output_rv64imafdc_lp64d_O0/pr65401.s b/output_rv64imafdc_lp64d_O0/pr65401.s
  index 0d1ed420e0..2a3022dd2a 100644
  --- a/output_rv64imafdc_lp64d_O0/pr65401.s
  +++ b/output_rv64imafdc_lp64d_O0/pr65401.s
  @@ -26,13 +26,13 @@ foo:                                    # @foo
   .LBB0_2:                                # %for.body
                                           #   in Loop: Header=BB0_1 Depth=1
   	ld	a1, -40(s0)
  -	lwu	a0, -28(s0)
  -	slli	a2, a0, 1
  -	slli	a0, a2, 32
  +	lw	a2, -28(s0)
  +	slli	a3, a2, 1
  +	slli	a0, a3, 32
   	srli	a0, a0, 32
   	add	a0, a0, a1
   	lbu	a0, 0(a0)
  -	ori	a3, a2, 1
  +	ori	a3, a3, 1
   	slli	a3, a3, 32
   	srli	a3, a3, 32
   	add	a1, a1, a3
  @@ -40,6 +40,8 @@ foo:                                    # @foo
   	slli	a1, a1, 8
   	or	a0, a0, a1
   	ld	a1, -24(s0)
  +	slli	a2, a2, 32
  +	srli	a2, a2, 31
   	add	a1, a1, a2
   	sh	a0, 0(a1)
   	j	.LBB0_3
  @@ -81,20 +83,22 @@ bar:                                    # @bar
   .LBB1_2:                                # %for.body
                                           #   in Loop: Header=BB1_1 Depth=1
   	ld	a1, -40(s0)
  -	lwu	a0, -28(s0)
  -	slli	a2, a0, 1
  -	slli	a0, a2, 32
  +	lw	a2, -28(s0)
  +	slli	a3, a2, 1
  +	slli	a0, a3, 32
   	srli	a0, a0, 32
   	add	a0, a0, a1
   	lb	a0, 0(a0)
   	slli	a0, a0, 8
  -	ori	a3, a2, 1
  +	ori	a3, a3, 1
   	slli	a3, a3, 32
   	srli	a3, a3, 32
   	add	a1, a1, a3
   	lbu	a1, 0(a1)
   	or	a0, a0, a1
   	ld	a1, -24(s0)
  +	slli	a2, a2, 32
  +	srli	a2, a2, 31
   	add	a1, a1, a2
   	sh	a0, 0(a1)
   	j	.LBB1_3
  @@ -133,12 +137,13 @@ main:                                   # @main
   	j	.LBB2_2
   .LBB2_2:                                # %for.body
                                           #   in Loop: Header=BB2_1 Depth=1
  -	lwu	a1, -24(s0)
  +	lw	a1, -24(s0)
   	li	a0, 64
   	subw	a0, a0, a1
   	slliw	a0, a0, 8
   	addw	a0, a0, a1
  -	slli	a2, a1, 1
  +	slli	a1, a1, 32
  +	srli	a2, a1, 31
   	addi	a1, s0, -152
   	add	a1, a1, a2
   	sh	a0, 0(a1)
  @@ -163,8 +168,9 @@ main:                                   # @main
   	j	.LBB2_6
   .LBB2_6:                                # %for.body5
                                           #   in Loop: Header=BB2_5 Depth=1
  -	lwu	a1, -24(s0)
  -	slli	a2, a1, 1
  +	lw	a1, -24(s0)
  +	slli	a0, a1, 32
  +	srli	a2, a0, 31
   	addi	a0, s0, -152
   	add	a0, a0, a2
   	lhu	a0, 0(a0)
  @@ -197,12 +203,13 @@ main:                                   # @main
   	j	.LBB2_12
   .LBB2_12:                               # %for.body21
                                           #   in Loop: Header=BB2_11 Depth=1
  -	lwu	a1, -24(s0)
  +	lw	a1, -24(s0)
   	li	a0, 64
   	subw	a0, a0, a1
   	slliw	a0, a0, 8
   	addw	a0, a0, a1
  -	slli	a2, a1, 1
  +	slli	a1, a1, 32
  +	srli	a2, a1, 31
   	addi	a1, s0, -152
   	add	a1, a1, a2
   	sh	a0, 0(a1)
  @@ -227,8 +234,9 @@ main:                                   # @main
   	j	.LBB2_16
   .LBB2_16:                               # %for.body35
                                           #   in Loop: Header=BB2_15 Depth=1
  -	lwu	a2, -24(s0)
  -	slli	a1, a2, 1
  +	lw	a2, -24(s0)
  +	slli	a0, a2, 32
  +	srli	a1, a0, 31
   	addi	a0, s0, -152
   	add	a0, a0, a1
   	lhu	a0, 0(a0)
  diff --git a/output_rv64imafdc_lp64d_O0/pr71700.s b/output_rv64imafdc_lp64d_O0/pr71700.s
  index 5d1085197a..4170fb8ae7 100644
  --- a/output_rv64imafdc_lp64d_O0/pr71700.s
  +++ b/output_rv64imafdc_lp64d_O0/pr71700.s
  @@ -19,8 +19,9 @@ main:                                   # @main
   	lui	a0, %hi(d)
   	lw	a1, -24(s0)
   	sw	a1, %lo(d)(a0)
  -	lhu	a0, %lo(d+2)(a0)
  -	andi	a0, a0, 1
  +	lw	a0, %lo(d)(a0)
  +	slli	a0, a0, 47
  +	srli	a0, a0, 63
   	beqz	a0, .LBB0_2
   	j	.LBB0_1
   .LBB0_1:                                # %if.then
  diff --git a/output_rv64imafdc_lp64d_O0/pr79388.s b/output_rv64imafdc_lp64d_O0/pr79388.s
  index cb855e742b..71fde755e4 100644
  --- a/output_rv64imafdc_lp64d_O0/pr79388.s
  +++ b/output_rv64imafdc_lp64d_O0/pr79388.s
  @@ -21,11 +21,12 @@ foo:                                    # @foo
   	addiw	a1, a1, -2
   	and	a0, a0, a1
   	sw	a0, -20(s0)
  -	lwu	a0, -20(s0)
  -	lui	a1, 65537
  -	slli	a1, a1, 3
  -	addi	a1, a1, 1
  -	mul	a1, a0, a1
  +	lw	a0, -20(s0)
  +	lui	a1, 524296
  +	addiw	a1, a1, 1
  +	slli	a2, a1, 32
  +	slli	a1, a0, 32
  +	mulhu	a1, a1, a2
   	srli	a1, a1, 47
   	slliw	a2, a1, 16
   	subw	a1, a1, a2
  diff --git a/output_rv64imafdc_lp64d_O0/pr83362.s b/output_rv64imafdc_lp64d_O0/pr83362.s
  index c9bbdd6955..a1579787be 100644
  --- a/output_rv64imafdc_lp64d_O0/pr83362.s
  +++ b/output_rv64imafdc_lp64d_O0/pr83362.s
  @@ -45,10 +45,12 @@ foo:                                    # @foo
   .LBB1_1:                                # %do.body
                                           # =>This Inner Loop Header: Depth=1
   	lui	a1, %hi(e)
  -	lwu	a0, %lo(e)(a1)
  +	lw	a0, %lo(e)(a1)
   	lui	a2, 256
   	addiw	a2, a2, 257
  -	mul	a2, a0, a2
  +	slli	a3, a2, 32
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, a3
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  diff --git a/output_rv64imafdc_lp64d_O1/20140622-1.s b/output_rv64imafdc_lp64d_O1/20140622-1.s
  index e33cce6bdf..6d20c13a92 100644
  --- a/output_rv64imafdc_lp64d_O1/20140622-1.s
  +++ b/output_rv64imafdc_lp64d_O1/20140622-1.s
  @@ -8,10 +8,12 @@
   test:                                   # @test
   # %bb.0:                                # %entry
   	lui	a1, %hi(p)
  -	lwu	a1, %lo(p)(a1)
  +	lw	a1, %lo(p)(a1)
   	addw	a0, a0, a1
   	slli	a0, a0, 32
   	srli	a0, a0, 32
  +	slli	a1, a1, 32
  +	srli	a1, a1, 32
   	sub	a0, a0, a1
   	ret
   .Lfunc_end0:
  diff --git a/output_rv64imafdc_lp64d_O1/pr22061-1.s b/output_rv64imafdc_lp64d_O1/pr22061-1.s
  index 3d538d6ad9..461d597641 100644
  --- a/output_rv64imafdc_lp64d_O1/pr22061-1.s
  +++ b/output_rv64imafdc_lp64d_O1/pr22061-1.s
  @@ -17,8 +17,10 @@ foo:                                    # @foo
   bar:                                    # @bar
   # %bb.0:                                # %entry
   	lui	a1, %hi(N)
  -	lwu	a1, %lo(N)(a1)
  -	add	a0, a0, a1
  +	lw	a1, %lo(N)(a1)
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	add	a0, a0, a2
   	sb	a1, 0(a0)
   	ret
   .Lfunc_end1:
  diff --git a/output_rv64imafdc_lp64d_O1/pr23135.s b/output_rv64imafdc_lp64d_O1/pr23135.s
  index 9d13784c07..8167879d43 100644
  --- a/output_rv64imafdc_lp64d_O1/pr23135.s
  +++ b/output_rv64imafdc_lp64d_O1/pr23135.s
  @@ -33,164 +33,179 @@ main:                                   # @main
   	sd	s3, 24(sp)                      # 8-byte Folded Spill
   	sd	s4, 16(sp)                      # 8-byte Folded Spill
   	sd	s5, 8(sp)                       # 8-byte Folded Spill
  +	sd	s6, 0(sp)                       # 8-byte Folded Spill
   	lui	a0, %hi(i)
   	lw	a4, %lo(i)(a0)
   	lw	a5, %lo(i+4)(a0)
   	lui	a0, %hi(j)
  -	lw	a2, %lo(j)(a0)
  -	lw	a3, %lo(j+4)(a0)
  -	add	a1, a2, a4
  -	add	s1, a3, a5
  -	lui	a0, %hi(res)
  -	sw	s1, %lo(res+4)(a0)
  -	xori	s0, a1, 160
  -	xori	s1, s1, 113
  -	or	s1, s1, s0
  -	sext.w	s1, s1
  -	sw	a1, %lo(res)(a0)
  -	bnez	s1, .LBB1_12
  +	lw	s0, %lo(j+4)(a0)
  +	lw	s1, %lo(j)(a0)
  +	addw	a1, s0, a5
  +	addw	s4, s1, a4
  +	lui	a2, %hi(res)
  +	sw	s4, %lo(res)(a2)
  +	sw	a1, %lo(res+4)(a2)
  +	lw	a3, %lo(res)(a2)
  +	lw	a0, %lo(res+4)(a2)
  +	xori	a3, a3, 160
  +	xori	a0, a0, 113
  +	or	a0, a0, a3
  +	bnez	a0, .LBB1_12
   # %bb.1:                                # %verify.exit
  -	mul	a1, a3, a5
  -	mul	s1, a2, a4
  -	sw	s1, %lo(res)(a0)
  -	xori	s1, s1, 1500
  -	xori	s0, a1, 1300
  -	or	s1, s1, s0
  -	sext.w	s1, s1
  -	sw	a1, %lo(res+4)(a0)
  -	bnez	s1, .LBB1_12
  +	mulw	s5, s0, a5
  +	mulw	s3, s1, a4
  +	sw	s3, %lo(res)(a2)
  +	sw	s5, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a2, %lo(res+4)(a2)
  +	xori	a0, a0, 1500
  +	xori	a2, a2, 1300
  +	or	a0, a0, a2
  +	bnez	a0, .LBB1_12
   # %bb.2:                                # %verify.exit27
  -	divw	s3, a5, a3
  -	divw	a1, a4, a2
  -	lui	s1, %hi(res)
  -	sw	a1, %lo(res)(s1)
  -	xori	s0, a1, 15
  -	xori	a0, s3, 7
  -	or	a0, a0, s0
  -	sw	s3, %lo(res+4)(s1)
  +	divw	t2, a5, s0
  +	divw	t3, a4, s1
  +	lui	a2, %hi(res)
  +	sw	t3, %lo(res)(a2)
  +	sw	t2, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a3, %lo(res+4)(a2)
  +	xori	a0, a0, 15
  +	xori	a3, a3, 7
  +	or	a0, a0, a3
   	bnez	a0, .LBB1_12
   # %bb.3:                                # %verify.exit32
  -	and	t3, a3, a5
  -	and	t2, a2, a4
  -	xori	a0, t2, 2
  -	xori	s0, t3, 4
  -	or	a0, a0, s0
  -	sw	t2, %lo(res)(s1)
  -	sw	t3, %lo(res+4)(s1)
  +	and	a7, s0, a5
  +	and	a6, s1, a4
  +	sw	a6, %lo(res)(a2)
  +	sw	a7, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a2, %lo(res+4)(a2)
  +	xori	a0, a0, 2
  +	xori	a2, a2, 4
  +	or	a0, a0, a2
   	bnez	a0, .LBB1_12
   # %bb.4:                                # %verify.exit37
  -	or	a6, a3, a5
  -	or	a7, a2, a4
  -	lui	s1, %hi(res)
  -	sw	a7, %lo(res)(s1)
  -	xori	a0, a7, 158
  -	xori	s0, a6, 109
  -	or	a0, a0, s0
  -	sw	a6, %lo(res+4)(s1)
  +	or	t0, s0, a5
  +	or	t1, s1, a4
  +	lui	a2, %hi(res)
  +	sw	t1, %lo(res)(a2)
  +	sw	t0, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a3, %lo(res+4)(a2)
  +	xori	a0, a0, 158
  +	xori	a3, a3, 109
  +	or	a0, a0, a3
   	bnez	a0, .LBB1_12
   # %bb.5:                                # %verify.exit42
  -	xor	t1, a3, a5
  -	xor	t0, a2, a4
  -	xori	a0, t0, 156
  -	xori	s0, t1, 105
  -	or	a0, a0, s0
  -	sw	t0, %lo(res)(s1)
  -	sw	t1, %lo(res+4)(s1)
  +	xor	t5, s0, a5
  +	xor	t4, s1, a4
  +	sw	t4, %lo(res)(a2)
  +	sw	t5, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a2, %lo(res+4)(a2)
  +	xori	a0, a0, 156
  +	xori	a2, a2, 105
  +	or	a0, a0, a2
   	bnez	a0, .LBB1_12
   # %bb.6:                                # %verify.exit47
  -	negw	t4, a5
  -	negw	t5, a4
  -	lui	s1, %hi(res)
  -	sw	t5, %lo(res)(s1)
  -	xori	a0, t5, -150
  -	xori	s0, t4, -100
  -	or	a0, a0, s0
  -	sw	t4, %lo(res+4)(s1)
  +	negw	t6, a5
  +	negw	s0, a4
  +	lui	a2, %hi(res)
  +	sw	s0, %lo(res)(a2)
  +	sw	t6, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a3, %lo(res+4)(a2)
  +	xori	a0, a0, -150
  +	xori	a3, a3, -100
  +	or	a0, a0, a3
   	bnez	a0, .LBB1_12
   # %bb.7:                                # %verify.exit52
  -	not	t6, a5
  -	xori	a0, a4, 150
  -	xori	s0, a5, 100
  -	or	a0, a0, s0
  -	not	s0, a4
  -	sw	s0, %lo(res)(s1)
  -	sw	t6, %lo(res+4)(s1)
  +	not	s2, a5
  +	not	s1, a4
  +	sw	s1, %lo(res)(a2)
  +	sw	s2, %lo(res+4)(a2)
  +	lw	a0, %lo(res)(a2)
  +	lw	a2, %lo(res+4)(a2)
  +	xori	a0, a0, -151
  +	xori	a2, a2, -101
  +	or	a0, a0, a2
   	bnez	a0, .LBB1_12
   # %bb.8:                                # %verify.exit57
  -	addw	s2, a3, a5
  -	addw	s4, a2, a4
  -	mulw	s5, a2, a4
  -	mulw	a3, a3, a5
  -	subw	a0, s0, a4
  -	subw	a4, t6, a5
  -	add	a4, a4, a3
  -	add	a0, a0, s5
  -	add	a0, a0, s4
  -	add	a4, a4, s2
  -	add	a4, a4, t3
  -	add	a0, a0, t2
  -	add	a0, a0, a7
  -	add	a4, a4, a6
  -	add	s1, a4, t1
  -	add	a0, a0, t0
  -	lui	a5, %hi(k)
  -	sw	a0, %lo(k)(a5)
  -	lui	a4, %hi(res)
  -	sw	a0, %lo(res)(a4)
  -	xori	a0, a0, 1675
  -	xori	a2, s1, 1430
  -	or	a0, a0, a2
  -	sw	s1, %lo(k+4)(a5)
  -	sext.w	a0, a0
  -	sw	s1, %lo(res+4)(a4)
  +	subw	a0, s1, a4
  +	subw	a2, s2, a5
  +	addw	a2, a2, s5
  +	addw	a0, a0, s3
  +	addw	a0, a0, s4
  +	addw	a2, a2, a1
  +	addw	a2, a2, a7
  +	addw	a0, a0, a6
  +	addw	a0, a0, t1
  +	addw	a2, a2, t0
  +	addw	a2, a2, t5
  +	addw	a0, a0, t4
  +	lui	a5, %hi(res)
  +	sw	a0, %lo(res)(a5)
  +	sw	a2, %lo(res+4)(a5)
  +	lw	a3, %lo(res)(a5)
  +	lw	a4, %lo(res+4)(a5)
  +	lui	s6, %hi(k)
  +	sw	a0, %lo(k)(s6)
  +	xori	a0, a3, 1675
  +	xori	a3, a4, 1430
  +	or	a0, a0, a3
  +	sw	a2, %lo(k+4)(s6)
   	bnez	a0, .LBB1_12
   # %bb.9:                                # %verify.exit62
  -	mulw	a0, s0, t5
  -	mulw	a2, t6, t4
  -	mul	a2, a2, a3
  -	mul	a0, a0, s5
  -	mul	a0, a0, s4
  -	mul	a2, a2, s2
  -	mul	a2, a2, t3
  -	mul	a0, a0, t2
  -	mul	a0, a0, a7
  -	mul	a2, a2, a6
  -	mul	a2, a2, t1
  -	mul	a0, a0, t0
  -	sw	a0, %lo(k)(a5)
  -	sw	a2, %lo(k+4)(a5)
  -	sw	a0, %lo(res)(a4)
  -	lui	a5, 355583
  -	xor	a0, a0, a5
  -	lui	a5, 662935
  -	addiw	a5, a5, -704
  -	xor	a5, a5, a2
  -	or	a0, a0, a5
  -	sext.w	a0, a0
  -	sw	a2, %lo(res+4)(a4)
  +	mulw	a0, s1, s0
  +	mulw	a2, s2, t6
  +	mulw	a2, a2, s5
  +	mulw	a0, a0, s3
  +	mulw	a0, a0, s4
  +	mulw	a2, a2, a1
  +	mulw	a2, a2, a7
  +	mulw	a0, a0, a6
  +	mulw	a0, a0, t1
  +	mulw	a2, a2, t0
  +	mulw	a2, a2, t5
  +	mulw	a0, a0, t4
  +	sw	a0, %lo(k)(s6)
  +	sw	a0, %lo(res)(a5)
  +	lw	a0, %lo(res)(a5)
  +	sw	a2, %lo(res+4)(a5)
  +	lw	a3, %lo(res+4)(a5)
  +	lui	a4, 355583
  +	xor	a0, a0, a4
  +	lui	a4, 662935
  +	addiw	a4, a4, -704
  +	xor	a3, a3, a4
  +	or	a0, a0, a3
  +	sw	a2, %lo(k+4)(s6)
   	bnez	a0, .LBB1_12
   # %bb.10:                               # %verify.exit67
  -	divw	a0, s2, a3
  -	divw	a2, s4, s5
  -	divw	a1, a2, a1
  -	divw	a0, a0, s3
  -	divw	a0, a0, t3
  -	divw	a1, a1, t2
  -	divw	a1, a1, a7
  -	divw	a0, a0, a6
  -	divw	a0, a0, t1
  -	divw	a1, a1, t0
  -	divw	a1, a1, t5
  -	divw	a0, a0, t4
  -	divw	a0, a0, t6
  +	divw	a0, a1, s5
  +	divw	a1, s4, s3
  +	divw	a1, a1, t3
  +	divw	a0, a0, t2
  +	divw	a0, a0, a7
  +	divw	a1, a1, a6
  +	divw	a1, a1, t1
  +	divw	a0, a0, t0
  +	divw	a0, a0, t5
  +	divw	a1, a1, t4
   	divw	a1, a1, s0
  -	lui	a2, %hi(k)
  -	sw	a1, %lo(k)(a2)
  -	sw	a0, %lo(k+4)(a2)
  +	divw	a0, a0, t6
  +	divw	a0, a0, s2
  +	divw	a1, a1, s1
   	lui	a2, %hi(res)
   	sw	a1, %lo(res)(a2)
  -	or	a1, a1, a0
   	sw	a0, %lo(res+4)(a2)
  +	lw	a3, %lo(res)(a2)
  +	lw	a2, %lo(res+4)(a2)
  +	lui	a4, %hi(k)
  +	sw	a1, %lo(k)(a4)
  +	or	a1, a2, a3
  +	sw	a0, %lo(k+4)(a4)
   	bnez	a1, .LBB1_12
   # %bb.11:                               # %verify.exit72
   	li	a0, 0
  diff --git a/output_rv64imafdc_lp64d_O1/pr51581-2.s b/output_rv64imafdc_lp64d_O1/pr51581-2.s
  index 7ce56aa11e..40ee3b4359 100644
  --- a/output_rv64imafdc_lp64d_O1/pr51581-2.s
  +++ b/output_rv64imafdc_lp64d_O1/pr51581-2.s
  @@ -44,14 +44,14 @@ f2:                                     # @f2
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB1_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -110,11 +110,13 @@ f4:                                     # @f4
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, 18
   .LBB3_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	subw	a4, a5, a4
  @@ -170,15 +172,15 @@ f6:                                     # @f6
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, 19
   .LBB5_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -210,11 +212,10 @@ f7:                                     # @f7
   	addiw	a6, a3, 1366
   .LBB6_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	sext.w	a5, a4
  -	mul	a5, a5, a6
  +	lw	a4, 0(a1)
  +	mul	a5, a4, a6
   	srli	a5, a5, 32
  -	srli	a3, a4, 31
  +	srliw	a3, a4, 31
   	addw	a3, a3, a5
   	slliw	a5, a3, 1
   	addw	a3, a3, a5
  @@ -239,14 +240,14 @@ f8:                                     # @f8
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB7_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -276,11 +277,10 @@ f9:                                     # @f9
   	li	a6, -18
   .LBB8_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 34
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -306,11 +306,13 @@ f10:                                    # @f10
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, -18
   .LBB9_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	addw	a4, a4, a5
  @@ -339,11 +341,10 @@ f11:                                    # @f11
   	li	a6, -19
   .LBB10_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 35
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -367,15 +368,15 @@ f12:                                    # @f12
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, -19
   .LBB11_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -444,10 +445,9 @@ main:                                   # @main
   	lui	a2, 1
   	lui	a3, 349525
   	addiw	a6, a3, 1366
  -	lui	a4, 171
  +	lui	a4, 699051
   	addiw	a4, a4, -1365
  -	slli	a4, a4, 12
  -	addi	a7, a4, -1365
  +	slli	a7, a4, 32
   .LBB12_3:                               # %for.body5
                                           # =>This Inner Loop Header: Depth=1
   	lw	a5, 0(s0)
  @@ -462,9 +462,10 @@ main:                                   # @main
   	bne	t0, a3, .LBB12_27
   # %bb.4:                                # %lor.lhs.false
                                           #   in Loop: Header=BB12_3 Depth=1
  -	lwu	a3, 0(s1)
  +	lw	a3, 0(s1)
   	lw	t0, 0(a0)
  -	mul	a5, a3, a7
  +	slli	a5, a3, 32
  +	mulhu	a5, a5, a7
   	srli	a5, a5, 33
   	slliw	a4, a5, 1
   	addw	a4, a4, a5
  @@ -491,24 +492,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_7:                               # %for.body22
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.8:                                # %lor.lhs.false29
                                           #   in Loop: Header=BB12_7 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -536,10 +539,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_11:                              # %for.body43
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -553,9 +555,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.12:                               # %lor.lhs.false50
                                           #   in Loop: Header=BB12_11 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  @@ -586,10 +589,9 @@ main:                                   # @main
   	lui	a4, 1
   	lui	a5, 349525
   	addiw	a6, a5, 1366
  -	lui	s1, 171
  +	lui	s1, 699051
   	addiw	s1, s1, -1365
  -	slli	s1, s1, 12
  -	addi	a7, s1, -1365
  +	slli	a7, s1, 32
   .LBB12_15:                              # %for.body64
                                           # =>This Inner Loop Header: Depth=1
   	lw	s0, 0(a2)
  @@ -604,9 +606,10 @@ main:                                   # @main
   	bne	t0, a5, .LBB12_27
   # %bb.16:                               # %lor.lhs.false71
                                           #   in Loop: Header=BB12_15 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t0, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 33
   	slliw	s1, s0, 1
   	addw	s1, s1, s0
  @@ -633,24 +636,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_19:                              # %for.body85
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.20:                               # %lor.lhs.false92
                                           #   in Loop: Header=BB12_19 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -678,10 +683,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_23:                              # %for.body106
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -695,9 +699,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.24:                               # %lor.lhs.false113
                                           #   in Loop: Header=BB12_23 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  diff --git a/output_rv64imafdc_lp64d_O1/pr53645.s b/output_rv64imafdc_lp64d_O1/pr53645.s
  index 9bc27bccb5..8fbf5b1879 100644
  --- a/output_rv64imafdc_lp64d_O1/pr53645.s
  +++ b/output_rv64imafdc_lp64d_O1/pr53645.s
  @@ -188,7 +188,7 @@ sq1428:                                 # @sq1428
   sr1428:                                 # @sr1428
   # %bb.0:                                # %entry
   	lw	a2, 4(a1)
  -	lwu	a3, 8(a1)
  +	lw	a3, 8(a1)
   	lw	a1, 12(a1)
   	slli	a4, a2, 1
   	srli	a4, a4, 62
  @@ -200,7 +200,7 @@ sr1428:                                 # @sr1428
   	add	a4, a4, a1
   	andi	a4, a4, -8
   	subw	a1, a1, a4
  -	srli	a4, a3, 31
  +	srliw	a4, a3, 31
   	add	a4, a4, a3
   	andi	a4, a4, -2
   	subw	a3, a3, a4
  @@ -254,36 +254,44 @@ uq3333:                                 # @uq3333
   	.type	ur3333, at function
   ur3333:                                 # @ur3333
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI9_0)
  -	ld	a3, %lo(.LCPI9_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	srli	a7, a4, 1
  -	andi	a4, a4, -2
  -	addw	a4, a4, a7
  -	subw	a7, a2, a4
  -	mulhu	a4, a1, a3
  -	srli	a2, a4, 1
  -	andi	a4, a4, -2
  -	addw	a2, a2, a4
  -	subw	a1, a1, a2
  -	mulhu	a2, a5, a3
  -	srli	a4, a2, 1
  -	andi	a2, a2, -2
  -	addw	a2, a2, a4
  -	subw	a2, a5, a2
  -	mulhu	a3, a6, a3
  +	lw	t0, 12(a1)
  +	lw	t1, 8(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 4(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 0(a1)
  +	lui	a2, %hi(.LCPI9_0)
  +	ld	a2, %lo(.LCPI9_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 1
   	andi	a3, a3, -2
   	addw	a3, a3, a4
  -	subw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a2, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a7, 0(a0)
  +	subw	a1, a1, a3
  +	mulhu	a3, t2, a2
  +	srli	a4, a3, 1
  +	andi	a3, a3, -2
  +	addw	a3, a3, a4
  +	subw	a3, a5, a3
  +	mulhu	a4, a7, a2
  +	srli	a5, a4, 1
  +	andi	a4, a4, -2
  +	addw	a4, a4, a5
  +	subw	a4, t1, a4
  +	mulhu	a2, a6, a2
  +	srli	a5, a2, 1
  +	andi	a2, a2, -2
  +	addw	a2, a2, a5
  +	subw	a2, t0, a2
  +	sw	a2, 12(a0)
  +	sw	a4, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end9:
   	.size	ur3333, .Lfunc_end9-ur3333
  @@ -420,36 +428,44 @@ uq6565:                                 # @uq6565
   	.type	ur6565, at function
   ur6565:                                 # @ur6565
   # %bb.0:                                # %entry
  -	lwu	a2, 4(a1)
  -	lui	a3, %hi(.LCPI13_0)
  -	ld	a3, %lo(.LCPI13_0)(a3)
  -	lwu	a6, 8(a1)
  -	lwu	a7, 0(a1)
  -	lwu	a1, 12(a1)
  -	mulhu	a4, a2, a3
  -	srli	a5, a4, 2
  -	andi	a4, a4, -4
  -	addw	a4, a4, a5
  -	subw	a2, a2, a4
  -	mulhu	a3, a1, a3
  +	lw	t0, 8(a1)
  +	lw	t1, 0(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 12(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 4(a1)
  +	lui	a2, %hi(.LCPI13_0)
  +	ld	a2, %lo(.LCPI13_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 2
  -	lui	a5, %hi(.LCPI13_1)
  -	ld	a5, %lo(.LCPI13_1)(a5)
   	andi	a3, a3, -4
   	addw	a3, a3, a4
   	subw	a1, a1, a3
  -	mulhu	a3, a7, a5
  +	mulhu	a2, t2, a2
  +	srli	a3, a2, 2
  +	lui	a4, %hi(.LCPI13_1)
  +	ld	a4, %lo(.LCPI13_1)(a4)
  +	andi	a2, a2, -4
  +	addw	a2, a2, a3
  +	subw	a2, a5, a2
  +	mulhu	a3, a7, a4
   	srli	a3, a3, 2
  -	li	a4, 6
  -	mulw	a3, a3, a4
  -	subw	a3, a7, a3
  -	mulhu	a5, a6, a5
  -	srli	a5, a5, 2
  -	mulw	a4, a5, a4
  -	subw	a4, a6, a4
  -	sw	a1, 12(a0)
  +	li	a5, 6
  +	mulw	a3, a3, a5
  +	subw	a3, t1, a3
  +	mulhu	a4, a6, a4
  +	srli	a4, a4, 2
  +	mulw	a4, a4, a5
  +	subw	a4, t0, a4
  +	sw	a2, 12(a0)
   	sw	a4, 8(a0)
  -	sw	a2, 4(a0)
  +	sw	a1, 4(a0)
   	sw	a3, 0(a0)
   	ret
   .Lfunc_end13:
  @@ -592,48 +608,50 @@ uq1414146:                              # @uq1414146
   	.section	.sdata,"aw", at progbits
   	.p2align	3                               # -- Begin function ur1414146
   .LCPI17_0:
  -	.quad	5270498306774157605             # 0x4924924924924925
  -.LCPI17_1:
   	.quad	-6148914691236517205            # 0xaaaaaaaaaaaaaaab
  +.LCPI17_1:
  +	.quad	5270498306774157605             # 0x4924924924924925
   	.text
   	.globl	ur1414146
   	.p2align	1
   	.type	ur1414146, at function
   ur1414146:                              # @ur1414146
   # %bb.0:                                # %entry
  -	lwu	a6, 12(a1)
  -	lwu	a3, 0(a1)
  -	lui	a4, %hi(.LCPI17_0)
  -	ld	a4, %lo(.LCPI17_0)(a4)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	srli	a2, a3, 1
  -	mulhu	a2, a2, a4
  -	srli	a2, a2, 1
  -	li	a7, 14
  +	lw	a6, 8(a1)
  +	lw	a3, 4(a1)
  +	lw	a4, 12(a1)
  +	lui	a5, %hi(.LCPI17_0)
  +	ld	a5, %lo(.LCPI17_0)(a5)
  +	lw	a1, 0(a1)
  +	slli	a2, a4, 32
  +	srli	a2, a2, 32
  +	mulhu	a2, a2, a5
  +	srli	a2, a2, 2
  +	li	a7, 6
  +	lui	a5, %hi(.LCPI17_1)
  +	ld	a5, %lo(.LCPI17_1)(a5)
   	mulw	a2, a2, a7
  -	subw	a2, a3, a2
  -	srli	a3, a1, 1
  -	mulhu	a3, a3, a4
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a1, a1, a3
  -	srli	a3, a5, 1
  -	mulhu	a3, a3, a4
  -	lui	a4, %hi(.LCPI17_1)
  -	ld	a4, %lo(.LCPI17_1)(a4)
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a3, a5, a3
  -	mulhu	a4, a6, a4
  -	srli	a4, a4, 2
  -	li	a5, 6
  -	mulw	a4, a4, a5
  -	subw	a4, a6, a4
  -	sw	a4, 12(a0)
  -	sw	a3, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	subw	a7, a4, a2
  +	srliw	a4, a1, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	li	a2, 14
  +	mulw	a4, a4, a2
  +	subw	a1, a1, a4
  +	srliw	a4, a3, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a4, a4, a2
  +	subw	a3, a3, a4
  +	srliw	a4, a6, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a2, a4, a2
  +	subw	a2, a6, a2
  +	sw	a2, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
  +	sw	a7, 12(a0)
   	ret
   .Lfunc_end17:
   	.size	ur1414146, .Lfunc_end17-ur1414146
  @@ -788,48 +806,56 @@ uq7777:                                 # @uq7777
   	.type	ur7777, at function
   ur7777:                                 # @ur7777
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI21_0)
  -	ld	a3, %lo(.LCPI21_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a7, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	sub	a5, a2, a4
  -	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a2, a2, a4
  -	mulhu	a4, a1, a3
  -	sub	a5, a1, a4
  +	lw	a6, 12(a1)
  +	lw	a7, 8(a1)
  +	slli	a4, a6, 32
  +	lw	t2, 4(a1)
  +	srli	t0, a4, 32
  +	slli	a2, a7, 32
  +	srli	t1, a2, 32
  +	slli	a3, t2, 32
  +	lw	a1, 0(a1)
  +	lui	a4, %hi(.LCPI21_0)
  +	ld	a4, %lo(.LCPI21_0)(a4)
  +	srli	a3, a3, 32
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	mulhu	a5, a2, a4
  +	sub	a2, a2, a5
  +	srli	a2, a2, 1
  +	add	a2, a2, a5
  +	srli	a2, a2, 2
  +	slliw	a5, a2, 3
  +	subw	a2, a2, a5
  +	addw	a1, a1, a2
  +	mulhu	a2, a3, a4
  +	sub	a3, a3, a2
  +	srli	a3, a3, 1
  +	add	a2, a2, a3
  +	srli	a2, a2, 2
  +	slliw	a3, a2, 3
  +	subw	a2, a2, a3
  +	addw	a2, t2, a2
  +	mulhu	a3, t1, a4
  +	sub	a5, t1, a3
   	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a1, a1, a4
  -	mulhu	a4, a7, a3
  -	sub	a5, a7, a4
  +	add	a3, a3, a5
  +	srli	a3, a3, 2
  +	slliw	a5, a3, 3
  +	subw	a3, a3, a5
  +	addw	a3, a7, a3
  +	mulhu	a4, t0, a4
  +	sub	a5, t0, a4
   	srli	a5, a5, 1
   	add	a4, a4, a5
   	srli	a4, a4, 2
   	slliw	a5, a4, 3
   	subw	a4, a4, a5
  -	addw	a4, a7, a4
  -	mulhu	a3, a6, a3
  -	sub	a5, a6, a3
  -	srli	a5, a5, 1
  -	add	a3, a3, a5
  -	srli	a3, a3, 2
  -	slliw	a5, a3, 3
  -	subw	a3, a3, a5
  -	addw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a4, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	addw	a4, a6, a4
  +	sw	a4, 12(a0)
  +	sw	a3, 8(a0)
  +	sw	a2, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end21:
   	.size	ur7777, .Lfunc_end21-ur7777
  @@ -931,51 +957,47 @@ sr7777:                                 # @sr7777
   	.type	main, at function
   main:                                   # @main
   # %bb.0:                                # %entry
  -	addi	sp, sp, -144
  -	sd	ra, 136(sp)                     # 8-byte Folded Spill
  -	sd	s0, 128(sp)                     # 8-byte Folded Spill
  -	sd	s1, 120(sp)                     # 8-byte Folded Spill
  -	sd	s2, 112(sp)                     # 8-byte Folded Spill
  -	sd	s3, 104(sp)                     # 8-byte Folded Spill
  -	sd	s4, 96(sp)                      # 8-byte Folded Spill
  -	sd	s5, 88(sp)                      # 8-byte Folded Spill
  -	sd	s6, 80(sp)                      # 8-byte Folded Spill
  -	sd	s7, 72(sp)                      # 8-byte Folded Spill
  -	sd	s8, 64(sp)                      # 8-byte Folded Spill
  -	sd	s9, 56(sp)                      # 8-byte Folded Spill
  -	sd	s10, 48(sp)                     # 8-byte Folded Spill
  -	sd	s11, 40(sp)                     # 8-byte Folded Spill
  +	addi	sp, sp, -128
  +	sd	ra, 120(sp)                     # 8-byte Folded Spill
  +	sd	s0, 112(sp)                     # 8-byte Folded Spill
  +	sd	s1, 104(sp)                     # 8-byte Folded Spill
  +	sd	s2, 96(sp)                      # 8-byte Folded Spill
  +	sd	s3, 88(sp)                      # 8-byte Folded Spill
  +	sd	s4, 80(sp)                      # 8-byte Folded Spill
  +	sd	s5, 72(sp)                      # 8-byte Folded Spill
  +	sd	s6, 64(sp)                      # 8-byte Folded Spill
  +	sd	s7, 56(sp)                      # 8-byte Folded Spill
  +	sd	s8, 48(sp)                      # 8-byte Folded Spill
  +	sd	s9, 40(sp)                      # 8-byte Folded Spill
  +	sd	s10, 32(sp)                     # 8-byte Folded Spill
   	li	s3, 0
   	lui	a0, %hi(u)
   	addi	s2, a0, %lo(u)
  -	addi	s1, sp, 16
  -	lui	a0, 171
  -	addiw	a0, a0, -1365
  -	slli	a0, a0, 12
  -	addi	s4, a0, -1365
  +	addi	s4, sp, 16
   	lui	a0, 699051
   	addiw	a0, a0, -1365
  -	slli	s5, a0, 32
  +	slli	s1, a0, 32
   	lui	a0, 838861
   	addiw	a0, a0, -819
  -	slli	s6, a0, 32
  -	li	s7, 6
  +	slli	s5, a0, 32
  +	li	s6, 6
   	lui	a0, 299593
   	slli	a0, a0, 1
  -	addi	s8, a0, 1171
  -	li	s9, 14
  +	addi	s7, a0, 1171
  +	li	s8, 14
   	lui	a0, 149797
  -	addiw	s10, a0, -1755
  -	slli	s11, s10, 32
  +	addiw	a0, a0, -1755
  +	slli	s9, a0, 32
  +	li	s10, 16
   .LBB24_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
   	add	s0, s2, s3
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.2:                                # %lor.lhs.false
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -987,9 +1009,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.4:                                # %lor.lhs.false19
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1004,7 +1026,7 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1018,7 +1040,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1048,9 +1070,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  +	srliw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
   # %bb.12:                               # %lor.lhs.false90
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1077,7 +1099,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1094,9 +1116,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.18:                               # %lor.lhs.false145
  @@ -1104,16 +1127,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.19:                               # %if.end154
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.20:                               # %lor.lhs.false162
  @@ -1121,7 +1145,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.21:                               # %if.end171
  @@ -1131,9 +1155,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1144,7 +1169,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1154,9 +1179,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1167,7 +1193,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1180,9 +1206,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.26:                               # %lor.lhs.false217
  @@ -1190,16 +1217,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.27:                               # %if.end226
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.28:                               # %lor.lhs.false234
  @@ -1207,7 +1235,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.29:                               # %if.end243
  @@ -1217,11 +1245,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.30:                               # %lor.lhs.false253
  @@ -1229,7 +1258,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1239,11 +1268,12 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.32:                               # %lor.lhs.false270
  @@ -1251,7 +1281,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1264,10 +1294,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.34:                               # %lor.lhs.false289
  @@ -1275,17 +1305,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.35:                               # %if.end298
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.36:                               # %lor.lhs.false306
  @@ -1293,7 +1323,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a0, a0, 1
  -	mul	a0, a0, s8
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.37:                               # %if.end315
  @@ -1303,12 +1333,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.38:                               # %lor.lhs.false325
  @@ -1316,21 +1346,21 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.39:                               # %if.end334
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.40:                               # %lor.lhs.false342
  @@ -1338,9 +1368,9 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a2, a0, 1
  -	mul	a2, a2, s8
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.41:                               # %if.end351
  @@ -1350,9 +1380,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1364,7 +1395,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1375,9 +1406,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1389,7 +1421,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1403,9 +1435,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1420,7 +1453,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1434,9 +1467,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1451,7 +1485,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1466,8 +1500,7 @@ main:                                   # @main
   	#APP
   	#NO_APP
   	addi	s3, s3, 16
  -	li	a0, 16
  -	beq	s3, a0, .LBB24_1
  +	beq	s3, s10, .LBB24_1
   # %bb.50:                               # %for.body428.preheader
   	li	s3, 0
   	lui	a0, %hi(s)
  @@ -1501,8 +1534,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1521,8 +1554,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1545,8 +1578,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1567,8 +1600,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1587,8 +1620,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 29
  +	slli	a2, a0, 1
  +	srli	a2, a2, 61
   	addw	a0, a0, a2
   	sraiw	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1596,9 +1629,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	addw	a0, a0, a2
   	sraiw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1606,8 +1639,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1634,9 +1667,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	add	a2, a2, a0
   	andi	a2, a2, -2
   	subw	a0, a0, a2
  @@ -1645,8 +1678,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -2073,20 +2106,19 @@ main:                                   # @main
   	beq	s3, s10, .LBB24_51
   # %bb.100:                              # %for.end863
   	li	a0, 0
  -	ld	ra, 136(sp)                     # 8-byte Folded Reload
  -	ld	s0, 128(sp)                     # 8-byte Folded Reload
  -	ld	s1, 120(sp)                     # 8-byte Folded Reload
  -	ld	s2, 112(sp)                     # 8-byte Folded Reload
  -	ld	s3, 104(sp)                     # 8-byte Folded Reload
  -	ld	s4, 96(sp)                      # 8-byte Folded Reload
  -	ld	s5, 88(sp)                      # 8-byte Folded Reload
  -	ld	s6, 80(sp)                      # 8-byte Folded Reload
  -	ld	s7, 72(sp)                      # 8-byte Folded Reload
  -	ld	s8, 64(sp)                      # 8-byte Folded Reload
  -	ld	s9, 56(sp)                      # 8-byte Folded Reload
  -	ld	s10, 48(sp)                     # 8-byte Folded Reload
  -	ld	s11, 40(sp)                     # 8-byte Folded Reload
  -	addi	sp, sp, 144
  +	ld	ra, 120(sp)                     # 8-byte Folded Reload
  +	ld	s0, 112(sp)                     # 8-byte Folded Reload
  +	ld	s1, 104(sp)                     # 8-byte Folded Reload
  +	ld	s2, 96(sp)                      # 8-byte Folded Reload
  +	ld	s3, 88(sp)                      # 8-byte Folded Reload
  +	ld	s4, 80(sp)                      # 8-byte Folded Reload
  +	ld	s5, 72(sp)                      # 8-byte Folded Reload
  +	ld	s6, 64(sp)                      # 8-byte Folded Reload
  +	ld	s7, 56(sp)                      # 8-byte Folded Reload
  +	ld	s8, 48(sp)                      # 8-byte Folded Reload
  +	ld	s9, 40(sp)                      # 8-byte Folded Reload
  +	ld	s10, 32(sp)                     # 8-byte Folded Reload
  +	addi	sp, sp, 128
   	ret
   .LBB24_101:                             # %if.then
   	call	abort
  diff --git a/output_rv64imafdc_lp64d_O2/20140622-1.s b/output_rv64imafdc_lp64d_O2/20140622-1.s
  index e33cce6bdf..6d20c13a92 100644
  --- a/output_rv64imafdc_lp64d_O2/20140622-1.s
  +++ b/output_rv64imafdc_lp64d_O2/20140622-1.s
  @@ -8,10 +8,12 @@
   test:                                   # @test
   # %bb.0:                                # %entry
   	lui	a1, %hi(p)
  -	lwu	a1, %lo(p)(a1)
  +	lw	a1, %lo(p)(a1)
   	addw	a0, a0, a1
   	slli	a0, a0, 32
   	srli	a0, a0, 32
  +	slli	a1, a1, 32
  +	srli	a1, a1, 32
   	sub	a0, a0, a1
   	ret
   .Lfunc_end0:
  diff --git a/output_rv64imafdc_lp64d_O2/loop-5.s b/output_rv64imafdc_lp64d_O2/loop-5.s
  index 4c4398adfe..a5bdfb93ff 100644
  --- a/output_rv64imafdc_lp64d_O2/loop-5.s
  +++ b/output_rv64imafdc_lp64d_O2/loop-5.s
  @@ -9,15 +9,16 @@ main:                                   # @main
   # %bb.0:                                # %entry
   	addi	sp, sp, -16
   	sd	ra, 8(sp)                       # 8-byte Folded Spill
  -	lui	a3, %hi(t)
  -	lwu	a2, %lo(t)(a3)
  -	sext.w	a0, a2
  +	lui	a2, %hi(t)
  +	lw	a0, %lo(t)(a2)
   	li	a1, 4
   	bge	a0, a1, .LBB0_9
   # %bb.1:                                # %ap.exit.i
  +	slli	a1, a0, 32
  +	srli	a3, a1, 32
   	addiw	a1, a0, 1
  -	sw	a1, %lo(t)(a3)
  -	slli	a2, a2, 2
  +	sw	a1, %lo(t)(a2)
  +	slli	a2, a3, 2
   	lui	a3, %hi(a)
   	addi	a3, a3, %lo(a)
   	add	a2, a2, a3
  diff --git a/output_rv64imafdc_lp64d_O2/pr22061-1.s b/output_rv64imafdc_lp64d_O2/pr22061-1.s
  index 141bfd37a9..277b8f7983 100644
  --- a/output_rv64imafdc_lp64d_O2/pr22061-1.s
  +++ b/output_rv64imafdc_lp64d_O2/pr22061-1.s
  @@ -17,8 +17,10 @@ foo:                                    # @foo
   bar:                                    # @bar
   # %bb.0:                                # %entry
   	lui	a1, %hi(N)
  -	lwu	a1, %lo(N)(a1)
  -	add	a0, a0, a1
  +	lw	a1, %lo(N)(a1)
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	add	a0, a0, a2
   	sb	a1, 0(a0)
   	ret
   .Lfunc_end1:
  diff --git a/output_rv64imafdc_lp64d_O2/pr51581-2.s b/output_rv64imafdc_lp64d_O2/pr51581-2.s
  index 7ce56aa11e..40ee3b4359 100644
  --- a/output_rv64imafdc_lp64d_O2/pr51581-2.s
  +++ b/output_rv64imafdc_lp64d_O2/pr51581-2.s
  @@ -44,14 +44,14 @@ f2:                                     # @f2
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB1_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -110,11 +110,13 @@ f4:                                     # @f4
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, 18
   .LBB3_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	subw	a4, a5, a4
  @@ -170,15 +172,15 @@ f6:                                     # @f6
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, 19
   .LBB5_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -210,11 +212,10 @@ f7:                                     # @f7
   	addiw	a6, a3, 1366
   .LBB6_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	sext.w	a5, a4
  -	mul	a5, a5, a6
  +	lw	a4, 0(a1)
  +	mul	a5, a4, a6
   	srli	a5, a5, 32
  -	srli	a3, a4, 31
  +	srliw	a3, a4, 31
   	addw	a3, a3, a5
   	slliw	a5, a3, 1
   	addw	a3, a3, a5
  @@ -239,14 +240,14 @@ f8:                                     # @f8
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB7_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -276,11 +277,10 @@ f9:                                     # @f9
   	li	a6, -18
   .LBB8_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 34
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -306,11 +306,13 @@ f10:                                    # @f10
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, -18
   .LBB9_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	addw	a4, a4, a5
  @@ -339,11 +341,10 @@ f11:                                    # @f11
   	li	a6, -19
   .LBB10_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 35
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -367,15 +368,15 @@ f12:                                    # @f12
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, -19
   .LBB11_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -444,10 +445,9 @@ main:                                   # @main
   	lui	a2, 1
   	lui	a3, 349525
   	addiw	a6, a3, 1366
  -	lui	a4, 171
  +	lui	a4, 699051
   	addiw	a4, a4, -1365
  -	slli	a4, a4, 12
  -	addi	a7, a4, -1365
  +	slli	a7, a4, 32
   .LBB12_3:                               # %for.body5
                                           # =>This Inner Loop Header: Depth=1
   	lw	a5, 0(s0)
  @@ -462,9 +462,10 @@ main:                                   # @main
   	bne	t0, a3, .LBB12_27
   # %bb.4:                                # %lor.lhs.false
                                           #   in Loop: Header=BB12_3 Depth=1
  -	lwu	a3, 0(s1)
  +	lw	a3, 0(s1)
   	lw	t0, 0(a0)
  -	mul	a5, a3, a7
  +	slli	a5, a3, 32
  +	mulhu	a5, a5, a7
   	srli	a5, a5, 33
   	slliw	a4, a5, 1
   	addw	a4, a4, a5
  @@ -491,24 +492,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_7:                               # %for.body22
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.8:                                # %lor.lhs.false29
                                           #   in Loop: Header=BB12_7 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -536,10 +539,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_11:                              # %for.body43
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -553,9 +555,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.12:                               # %lor.lhs.false50
                                           #   in Loop: Header=BB12_11 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  @@ -586,10 +589,9 @@ main:                                   # @main
   	lui	a4, 1
   	lui	a5, 349525
   	addiw	a6, a5, 1366
  -	lui	s1, 171
  +	lui	s1, 699051
   	addiw	s1, s1, -1365
  -	slli	s1, s1, 12
  -	addi	a7, s1, -1365
  +	slli	a7, s1, 32
   .LBB12_15:                              # %for.body64
                                           # =>This Inner Loop Header: Depth=1
   	lw	s0, 0(a2)
  @@ -604,9 +606,10 @@ main:                                   # @main
   	bne	t0, a5, .LBB12_27
   # %bb.16:                               # %lor.lhs.false71
                                           #   in Loop: Header=BB12_15 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t0, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 33
   	slliw	s1, s0, 1
   	addw	s1, s1, s0
  @@ -633,24 +636,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_19:                              # %for.body85
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.20:                               # %lor.lhs.false92
                                           #   in Loop: Header=BB12_19 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -678,10 +683,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_23:                              # %for.body106
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -695,9 +699,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.24:                               # %lor.lhs.false113
                                           #   in Loop: Header=BB12_23 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  diff --git a/output_rv64imafdc_lp64d_O2/pr53645.s b/output_rv64imafdc_lp64d_O2/pr53645.s
  index 56bd435ece..7c352a0b5d 100644
  --- a/output_rv64imafdc_lp64d_O2/pr53645.s
  +++ b/output_rv64imafdc_lp64d_O2/pr53645.s
  @@ -188,7 +188,7 @@ sq1428:                                 # @sq1428
   sr1428:                                 # @sr1428
   # %bb.0:                                # %entry
   	lw	a2, 4(a1)
  -	lwu	a3, 8(a1)
  +	lw	a3, 8(a1)
   	lw	a1, 12(a1)
   	slli	a4, a2, 1
   	srli	a4, a4, 62
  @@ -200,7 +200,7 @@ sr1428:                                 # @sr1428
   	add	a4, a4, a1
   	andi	a4, a4, -8
   	subw	a1, a1, a4
  -	srli	a4, a3, 31
  +	srliw	a4, a3, 31
   	add	a4, a4, a3
   	andi	a4, a4, -2
   	subw	a3, a3, a4
  @@ -254,36 +254,44 @@ uq3333:                                 # @uq3333
   	.type	ur3333, at function
   ur3333:                                 # @ur3333
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI9_0)
  -	ld	a3, %lo(.LCPI9_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	srli	a7, a4, 1
  -	andi	a4, a4, -2
  -	addw	a4, a4, a7
  -	subw	a7, a2, a4
  -	mulhu	a4, a1, a3
  -	srli	a2, a4, 1
  -	andi	a4, a4, -2
  -	addw	a2, a2, a4
  -	subw	a1, a1, a2
  -	mulhu	a2, a5, a3
  -	srli	a4, a2, 1
  -	andi	a2, a2, -2
  -	addw	a2, a2, a4
  -	subw	a2, a5, a2
  -	mulhu	a3, a6, a3
  +	lw	t0, 12(a1)
  +	lw	t1, 8(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 4(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 0(a1)
  +	lui	a2, %hi(.LCPI9_0)
  +	ld	a2, %lo(.LCPI9_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 1
   	andi	a3, a3, -2
   	addw	a3, a3, a4
  -	subw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a2, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a7, 0(a0)
  +	subw	a1, a1, a3
  +	mulhu	a3, t2, a2
  +	srli	a4, a3, 1
  +	andi	a3, a3, -2
  +	addw	a3, a3, a4
  +	subw	a3, a5, a3
  +	mulhu	a4, a7, a2
  +	srli	a5, a4, 1
  +	andi	a4, a4, -2
  +	addw	a4, a4, a5
  +	subw	a4, t1, a4
  +	mulhu	a2, a6, a2
  +	srli	a5, a2, 1
  +	andi	a2, a2, -2
  +	addw	a2, a2, a5
  +	subw	a2, t0, a2
  +	sw	a2, 12(a0)
  +	sw	a4, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end9:
   	.size	ur3333, .Lfunc_end9-ur3333
  @@ -420,36 +428,44 @@ uq6565:                                 # @uq6565
   	.type	ur6565, at function
   ur6565:                                 # @ur6565
   # %bb.0:                                # %entry
  -	lwu	a2, 4(a1)
  -	lui	a3, %hi(.LCPI13_0)
  -	ld	a3, %lo(.LCPI13_0)(a3)
  -	lwu	a6, 8(a1)
  -	lwu	a7, 0(a1)
  -	lwu	a1, 12(a1)
  -	mulhu	a4, a2, a3
  -	srli	a5, a4, 2
  -	andi	a4, a4, -4
  -	addw	a4, a4, a5
  -	subw	a2, a2, a4
  -	mulhu	a3, a1, a3
  +	lw	t0, 8(a1)
  +	lw	t1, 0(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 12(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 4(a1)
  +	lui	a2, %hi(.LCPI13_0)
  +	ld	a2, %lo(.LCPI13_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 2
  -	lui	a5, %hi(.LCPI13_1)
  -	ld	a5, %lo(.LCPI13_1)(a5)
   	andi	a3, a3, -4
   	addw	a3, a3, a4
   	subw	a1, a1, a3
  -	mulhu	a3, a7, a5
  +	mulhu	a2, t2, a2
  +	srli	a3, a2, 2
  +	lui	a4, %hi(.LCPI13_1)
  +	ld	a4, %lo(.LCPI13_1)(a4)
  +	andi	a2, a2, -4
  +	addw	a2, a2, a3
  +	subw	a2, a5, a2
  +	mulhu	a3, a7, a4
   	srli	a3, a3, 2
  -	li	a4, 6
  -	mulw	a3, a3, a4
  -	subw	a3, a7, a3
  -	mulhu	a5, a6, a5
  -	srli	a5, a5, 2
  -	mulw	a4, a5, a4
  -	subw	a4, a6, a4
  -	sw	a1, 12(a0)
  +	li	a5, 6
  +	mulw	a3, a3, a5
  +	subw	a3, t1, a3
  +	mulhu	a4, a6, a4
  +	srli	a4, a4, 2
  +	mulw	a4, a4, a5
  +	subw	a4, t0, a4
  +	sw	a2, 12(a0)
   	sw	a4, 8(a0)
  -	sw	a2, 4(a0)
  +	sw	a1, 4(a0)
   	sw	a3, 0(a0)
   	ret
   .Lfunc_end13:
  @@ -592,48 +608,50 @@ uq1414146:                              # @uq1414146
   	.section	.sdata,"aw", at progbits
   	.p2align	3                               # -- Begin function ur1414146
   .LCPI17_0:
  -	.quad	5270498306774157605             # 0x4924924924924925
  -.LCPI17_1:
   	.quad	-6148914691236517205            # 0xaaaaaaaaaaaaaaab
  +.LCPI17_1:
  +	.quad	5270498306774157605             # 0x4924924924924925
   	.text
   	.globl	ur1414146
   	.p2align	1
   	.type	ur1414146, at function
   ur1414146:                              # @ur1414146
   # %bb.0:                                # %entry
  -	lwu	a6, 12(a1)
  -	lwu	a3, 0(a1)
  -	lui	a4, %hi(.LCPI17_0)
  -	ld	a4, %lo(.LCPI17_0)(a4)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	srli	a2, a3, 1
  -	mulhu	a2, a2, a4
  -	srli	a2, a2, 1
  -	li	a7, 14
  +	lw	a6, 8(a1)
  +	lw	a3, 4(a1)
  +	lw	a4, 12(a1)
  +	lui	a5, %hi(.LCPI17_0)
  +	ld	a5, %lo(.LCPI17_0)(a5)
  +	lw	a1, 0(a1)
  +	slli	a2, a4, 32
  +	srli	a2, a2, 32
  +	mulhu	a2, a2, a5
  +	srli	a2, a2, 2
  +	li	a7, 6
  +	lui	a5, %hi(.LCPI17_1)
  +	ld	a5, %lo(.LCPI17_1)(a5)
   	mulw	a2, a2, a7
  -	subw	a2, a3, a2
  -	srli	a3, a1, 1
  -	mulhu	a3, a3, a4
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a1, a1, a3
  -	srli	a3, a5, 1
  -	mulhu	a3, a3, a4
  -	lui	a4, %hi(.LCPI17_1)
  -	ld	a4, %lo(.LCPI17_1)(a4)
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a3, a5, a3
  -	mulhu	a4, a6, a4
  -	srli	a4, a4, 2
  -	li	a5, 6
  -	mulw	a4, a4, a5
  -	subw	a4, a6, a4
  -	sw	a4, 12(a0)
  -	sw	a3, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	subw	a7, a4, a2
  +	srliw	a4, a1, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	li	a2, 14
  +	mulw	a4, a4, a2
  +	subw	a1, a1, a4
  +	srliw	a4, a3, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a4, a4, a2
  +	subw	a3, a3, a4
  +	srliw	a4, a6, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a2, a4, a2
  +	subw	a2, a6, a2
  +	sw	a2, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
  +	sw	a7, 12(a0)
   	ret
   .Lfunc_end17:
   	.size	ur1414146, .Lfunc_end17-ur1414146
  @@ -788,48 +806,56 @@ uq7777:                                 # @uq7777
   	.type	ur7777, at function
   ur7777:                                 # @ur7777
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI21_0)
  -	ld	a3, %lo(.LCPI21_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a7, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	sub	a5, a2, a4
  -	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a2, a2, a4
  -	mulhu	a4, a1, a3
  -	sub	a5, a1, a4
  +	lw	a6, 12(a1)
  +	lw	a7, 8(a1)
  +	slli	a4, a6, 32
  +	lw	t2, 4(a1)
  +	srli	t0, a4, 32
  +	slli	a2, a7, 32
  +	srli	t1, a2, 32
  +	slli	a3, t2, 32
  +	lw	a1, 0(a1)
  +	lui	a4, %hi(.LCPI21_0)
  +	ld	a4, %lo(.LCPI21_0)(a4)
  +	srli	a3, a3, 32
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	mulhu	a5, a2, a4
  +	sub	a2, a2, a5
  +	srli	a2, a2, 1
  +	add	a2, a2, a5
  +	srli	a2, a2, 2
  +	slliw	a5, a2, 3
  +	subw	a2, a2, a5
  +	addw	a1, a1, a2
  +	mulhu	a2, a3, a4
  +	sub	a3, a3, a2
  +	srli	a3, a3, 1
  +	add	a2, a2, a3
  +	srli	a2, a2, 2
  +	slliw	a3, a2, 3
  +	subw	a2, a2, a3
  +	addw	a2, t2, a2
  +	mulhu	a3, t1, a4
  +	sub	a5, t1, a3
   	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a1, a1, a4
  -	mulhu	a4, a7, a3
  -	sub	a5, a7, a4
  +	add	a3, a3, a5
  +	srli	a3, a3, 2
  +	slliw	a5, a3, 3
  +	subw	a3, a3, a5
  +	addw	a3, a7, a3
  +	mulhu	a4, t0, a4
  +	sub	a5, t0, a4
   	srli	a5, a5, 1
   	add	a4, a4, a5
   	srli	a4, a4, 2
   	slliw	a5, a4, 3
   	subw	a4, a4, a5
  -	addw	a4, a7, a4
  -	mulhu	a3, a6, a3
  -	sub	a5, a6, a3
  -	srli	a5, a5, 1
  -	add	a3, a3, a5
  -	srli	a3, a3, 2
  -	slliw	a5, a3, 3
  -	subw	a3, a3, a5
  -	addw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a4, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	addw	a4, a6, a4
  +	sw	a4, 12(a0)
  +	sw	a3, 8(a0)
  +	sw	a2, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end21:
   	.size	ur7777, .Lfunc_end21-ur7777
  @@ -931,43 +957,37 @@ sr7777:                                 # @sr7777
   	.type	main, at function
   main:                                   # @main
   # %bb.0:                                # %entry
  -	addi	sp, sp, -144
  -	sd	ra, 136(sp)                     # 8-byte Folded Spill
  -	sd	s0, 128(sp)                     # 8-byte Folded Spill
  -	sd	s1, 120(sp)                     # 8-byte Folded Spill
  -	sd	s2, 112(sp)                     # 8-byte Folded Spill
  -	sd	s3, 104(sp)                     # 8-byte Folded Spill
  -	sd	s4, 96(sp)                      # 8-byte Folded Spill
  -	sd	s5, 88(sp)                      # 8-byte Folded Spill
  -	sd	s6, 80(sp)                      # 8-byte Folded Spill
  -	sd	s7, 72(sp)                      # 8-byte Folded Spill
  -	sd	s8, 64(sp)                      # 8-byte Folded Spill
  -	sd	s9, 56(sp)                      # 8-byte Folded Spill
  -	sd	s10, 48(sp)                     # 8-byte Folded Spill
  -	sd	s11, 40(sp)                     # 8-byte Folded Spill
  +	addi	sp, sp, -128
  +	sd	ra, 120(sp)                     # 8-byte Folded Spill
  +	sd	s0, 112(sp)                     # 8-byte Folded Spill
  +	sd	s1, 104(sp)                     # 8-byte Folded Spill
  +	sd	s2, 96(sp)                      # 8-byte Folded Spill
  +	sd	s3, 88(sp)                      # 8-byte Folded Spill
  +	sd	s4, 80(sp)                      # 8-byte Folded Spill
  +	sd	s5, 72(sp)                      # 8-byte Folded Spill
  +	sd	s6, 64(sp)                      # 8-byte Folded Spill
  +	sd	s7, 56(sp)                      # 8-byte Folded Spill
  +	sd	s8, 48(sp)                      # 8-byte Folded Spill
  +	sd	s9, 40(sp)                      # 8-byte Folded Spill
   	li	a0, 0
   	li	s3, 1
   	lui	a1, %hi(u)
   	addi	s2, a1, %lo(u)
  -	addi	s1, sp, 16
  -	lui	a1, 171
  -	addiw	a1, a1, -1365
  -	slli	a1, a1, 12
  -	addi	s4, a1, -1365
  +	addi	s4, sp, 16
   	lui	a1, 699051
   	addiw	a1, a1, -1365
  -	slli	s5, a1, 32
  +	slli	s1, a1, 32
   	lui	a1, 838861
   	addiw	a1, a1, -819
  -	slli	s6, a1, 32
  -	li	s7, 6
  +	slli	s5, a1, 32
  +	li	s6, 6
   	lui	a1, 299593
   	slli	a1, a1, 1
  -	addi	s8, a1, 1171
  -	li	s9, 14
  +	addi	s7, a1, 1171
  +	li	s8, 14
   	lui	a1, 149797
  -	addiw	s10, a1, -1755
  -	slli	s11, s10, 32
  +	addiw	a1, a1, -1755
  +	slli	s9, a1, 32
   .LBB24_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
   	slli	a0, a0, 4
  @@ -975,9 +995,9 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.2:                                # %lor.lhs.false
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -989,9 +1009,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.4:                                # %lor.lhs.false19
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1006,7 +1026,7 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1020,7 +1040,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1050,9 +1070,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  +	srliw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
   # %bb.12:                               # %lor.lhs.false90
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1079,7 +1099,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1096,9 +1116,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.18:                               # %lor.lhs.false145
  @@ -1106,16 +1127,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.19:                               # %if.end154
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.20:                               # %lor.lhs.false162
  @@ -1123,7 +1145,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.21:                               # %if.end171
  @@ -1133,9 +1155,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1146,7 +1169,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1156,9 +1179,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1169,7 +1193,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1182,9 +1206,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.26:                               # %lor.lhs.false217
  @@ -1192,16 +1217,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.27:                               # %if.end226
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.28:                               # %lor.lhs.false234
  @@ -1209,7 +1235,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.29:                               # %if.end243
  @@ -1219,11 +1245,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.30:                               # %lor.lhs.false253
  @@ -1231,7 +1258,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1241,11 +1268,12 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.32:                               # %lor.lhs.false270
  @@ -1253,7 +1281,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1266,10 +1294,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.34:                               # %lor.lhs.false289
  @@ -1277,17 +1305,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.35:                               # %if.end298
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.36:                               # %lor.lhs.false306
  @@ -1295,7 +1323,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a0, a0, 1
  -	mul	a0, a0, s8
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.37:                               # %if.end315
  @@ -1305,12 +1333,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.38:                               # %lor.lhs.false325
  @@ -1318,21 +1346,21 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.39:                               # %if.end334
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.40:                               # %lor.lhs.false342
  @@ -1340,9 +1368,9 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a2, a0, 1
  -	mul	a2, a2, s8
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.41:                               # %if.end351
  @@ -1352,9 +1380,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1366,7 +1395,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1377,9 +1406,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1391,7 +1421,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1405,9 +1435,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1422,7 +1453,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1436,9 +1467,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1453,7 +1485,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1505,8 +1537,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1525,8 +1557,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1549,8 +1581,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1571,8 +1603,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1591,8 +1623,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 29
  +	slli	a2, a0, 1
  +	srli	a2, a2, 61
   	addw	a0, a0, a2
   	sraiw	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1600,9 +1632,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	addw	a0, a0, a2
   	sraiw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1610,8 +1642,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1638,9 +1670,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	add	a2, a2, a0
   	andi	a2, a2, -2
   	subw	a0, a0, a2
  @@ -1649,8 +1681,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -2079,20 +2111,18 @@ main:                                   # @main
   	bnez	a1, .LBB24_51
   # %bb.100:                              # %for.end863
   	li	a0, 0
  -	ld	ra, 136(sp)                     # 8-byte Folded Reload
  -	ld	s0, 128(sp)                     # 8-byte Folded Reload
  -	ld	s1, 120(sp)                     # 8-byte Folded Reload
  -	ld	s2, 112(sp)                     # 8-byte Folded Reload
  -	ld	s3, 104(sp)                     # 8-byte Folded Reload
  -	ld	s4, 96(sp)                      # 8-byte Folded Reload
  -	ld	s5, 88(sp)                      # 8-byte Folded Reload
  -	ld	s6, 80(sp)                      # 8-byte Folded Reload
  -	ld	s7, 72(sp)                      # 8-byte Folded Reload
  -	ld	s8, 64(sp)                      # 8-byte Folded Reload
  -	ld	s9, 56(sp)                      # 8-byte Folded Reload
  -	ld	s10, 48(sp)                     # 8-byte Folded Reload
  -	ld	s11, 40(sp)                     # 8-byte Folded Reload
  -	addi	sp, sp, 144
  +	ld	ra, 120(sp)                     # 8-byte Folded Reload
  +	ld	s0, 112(sp)                     # 8-byte Folded Reload
  +	ld	s1, 104(sp)                     # 8-byte Folded Reload
  +	ld	s2, 96(sp)                      # 8-byte Folded Reload
  +	ld	s3, 88(sp)                      # 8-byte Folded Reload
  +	ld	s4, 80(sp)                      # 8-byte Folded Reload
  +	ld	s5, 72(sp)                      # 8-byte Folded Reload
  +	ld	s6, 64(sp)                      # 8-byte Folded Reload
  +	ld	s7, 56(sp)                      # 8-byte Folded Reload
  +	ld	s8, 48(sp)                      # 8-byte Folded Reload
  +	ld	s9, 40(sp)                      # 8-byte Folded Reload
  +	addi	sp, sp, 128
   	ret
   .LBB24_101:                             # %if.then
   	call	abort
  diff --git a/output_rv64imafdc_lp64d_O3/20140622-1.s b/output_rv64imafdc_lp64d_O3/20140622-1.s
  index e33cce6bdf..6d20c13a92 100644
  --- a/output_rv64imafdc_lp64d_O3/20140622-1.s
  +++ b/output_rv64imafdc_lp64d_O3/20140622-1.s
  @@ -8,10 +8,12 @@
   test:                                   # @test
   # %bb.0:                                # %entry
   	lui	a1, %hi(p)
  -	lwu	a1, %lo(p)(a1)
  +	lw	a1, %lo(p)(a1)
   	addw	a0, a0, a1
   	slli	a0, a0, 32
   	srli	a0, a0, 32
  +	slli	a1, a1, 32
  +	srli	a1, a1, 32
   	sub	a0, a0, a1
   	ret
   .Lfunc_end0:
  diff --git a/output_rv64imafdc_lp64d_O3/loop-5.s b/output_rv64imafdc_lp64d_O3/loop-5.s
  index 4c4398adfe..a5bdfb93ff 100644
  --- a/output_rv64imafdc_lp64d_O3/loop-5.s
  +++ b/output_rv64imafdc_lp64d_O3/loop-5.s
  @@ -9,15 +9,16 @@ main:                                   # @main
   # %bb.0:                                # %entry
   	addi	sp, sp, -16
   	sd	ra, 8(sp)                       # 8-byte Folded Spill
  -	lui	a3, %hi(t)
  -	lwu	a2, %lo(t)(a3)
  -	sext.w	a0, a2
  +	lui	a2, %hi(t)
  +	lw	a0, %lo(t)(a2)
   	li	a1, 4
   	bge	a0, a1, .LBB0_9
   # %bb.1:                                # %ap.exit.i
  +	slli	a1, a0, 32
  +	srli	a3, a1, 32
   	addiw	a1, a0, 1
  -	sw	a1, %lo(t)(a3)
  -	slli	a2, a2, 2
  +	sw	a1, %lo(t)(a2)
  +	slli	a2, a3, 2
   	lui	a3, %hi(a)
   	addi	a3, a3, %lo(a)
   	add	a2, a2, a3
  diff --git a/output_rv64imafdc_lp64d_O3/pr22061-1.s b/output_rv64imafdc_lp64d_O3/pr22061-1.s
  index 141bfd37a9..277b8f7983 100644
  --- a/output_rv64imafdc_lp64d_O3/pr22061-1.s
  +++ b/output_rv64imafdc_lp64d_O3/pr22061-1.s
  @@ -17,8 +17,10 @@ foo:                                    # @foo
   bar:                                    # @bar
   # %bb.0:                                # %entry
   	lui	a1, %hi(N)
  -	lwu	a1, %lo(N)(a1)
  -	add	a0, a0, a1
  +	lw	a1, %lo(N)(a1)
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	add	a0, a0, a2
   	sb	a1, 0(a0)
   	ret
   .Lfunc_end1:
  diff --git a/output_rv64imafdc_lp64d_O3/pr51581-2.s b/output_rv64imafdc_lp64d_O3/pr51581-2.s
  index 7ce56aa11e..40ee3b4359 100644
  --- a/output_rv64imafdc_lp64d_O3/pr51581-2.s
  +++ b/output_rv64imafdc_lp64d_O3/pr51581-2.s
  @@ -44,14 +44,14 @@ f2:                                     # @f2
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB1_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -110,11 +110,13 @@ f4:                                     # @f4
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, 18
   .LBB3_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	subw	a4, a5, a4
  @@ -170,15 +172,15 @@ f6:                                     # @f6
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, 19
   .LBB5_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -210,11 +212,10 @@ f7:                                     # @f7
   	addiw	a6, a3, 1366
   .LBB6_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	sext.w	a5, a4
  -	mul	a5, a5, a6
  +	lw	a4, 0(a1)
  +	mul	a5, a4, a6
   	srli	a5, a5, 32
  -	srli	a3, a4, 31
  +	srliw	a3, a4, 31
   	addw	a3, a3, a5
   	slliw	a5, a3, 1
   	addw	a3, a3, a5
  @@ -239,14 +240,14 @@ f8:                                     # @f8
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB7_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -276,11 +277,10 @@ f9:                                     # @f9
   	li	a6, -18
   .LBB8_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 34
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -306,11 +306,13 @@ f10:                                    # @f10
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, -18
   .LBB9_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	addw	a4, a4, a5
  @@ -339,11 +341,10 @@ f11:                                    # @f11
   	li	a6, -19
   .LBB10_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 35
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -367,15 +368,15 @@ f12:                                    # @f12
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, -19
   .LBB11_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -444,10 +445,9 @@ main:                                   # @main
   	lui	a2, 1
   	lui	a3, 349525
   	addiw	a6, a3, 1366
  -	lui	a4, 171
  +	lui	a4, 699051
   	addiw	a4, a4, -1365
  -	slli	a4, a4, 12
  -	addi	a7, a4, -1365
  +	slli	a7, a4, 32
   .LBB12_3:                               # %for.body5
                                           # =>This Inner Loop Header: Depth=1
   	lw	a5, 0(s0)
  @@ -462,9 +462,10 @@ main:                                   # @main
   	bne	t0, a3, .LBB12_27
   # %bb.4:                                # %lor.lhs.false
                                           #   in Loop: Header=BB12_3 Depth=1
  -	lwu	a3, 0(s1)
  +	lw	a3, 0(s1)
   	lw	t0, 0(a0)
  -	mul	a5, a3, a7
  +	slli	a5, a3, 32
  +	mulhu	a5, a5, a7
   	srli	a5, a5, 33
   	slliw	a4, a5, 1
   	addw	a4, a4, a5
  @@ -491,24 +492,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_7:                               # %for.body22
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.8:                                # %lor.lhs.false29
                                           #   in Loop: Header=BB12_7 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -536,10 +539,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_11:                              # %for.body43
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -553,9 +555,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.12:                               # %lor.lhs.false50
                                           #   in Loop: Header=BB12_11 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  @@ -586,10 +589,9 @@ main:                                   # @main
   	lui	a4, 1
   	lui	a5, 349525
   	addiw	a6, a5, 1366
  -	lui	s1, 171
  +	lui	s1, 699051
   	addiw	s1, s1, -1365
  -	slli	s1, s1, 12
  -	addi	a7, s1, -1365
  +	slli	a7, s1, 32
   .LBB12_15:                              # %for.body64
                                           # =>This Inner Loop Header: Depth=1
   	lw	s0, 0(a2)
  @@ -604,9 +606,10 @@ main:                                   # @main
   	bne	t0, a5, .LBB12_27
   # %bb.16:                               # %lor.lhs.false71
                                           #   in Loop: Header=BB12_15 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t0, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 33
   	slliw	s1, s0, 1
   	addw	s1, s1, s0
  @@ -633,24 +636,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_19:                              # %for.body85
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.20:                               # %lor.lhs.false92
                                           #   in Loop: Header=BB12_19 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -678,10 +683,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_23:                              # %for.body106
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -695,9 +699,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.24:                               # %lor.lhs.false113
                                           #   in Loop: Header=BB12_23 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  diff --git a/output_rv64imafdc_lp64d_O3/pr53645.s b/output_rv64imafdc_lp64d_O3/pr53645.s
  index 56bd435ece..7c352a0b5d 100644
  --- a/output_rv64imafdc_lp64d_O3/pr53645.s
  +++ b/output_rv64imafdc_lp64d_O3/pr53645.s
  @@ -188,7 +188,7 @@ sq1428:                                 # @sq1428
   sr1428:                                 # @sr1428
   # %bb.0:                                # %entry
   	lw	a2, 4(a1)
  -	lwu	a3, 8(a1)
  +	lw	a3, 8(a1)
   	lw	a1, 12(a1)
   	slli	a4, a2, 1
   	srli	a4, a4, 62
  @@ -200,7 +200,7 @@ sr1428:                                 # @sr1428
   	add	a4, a4, a1
   	andi	a4, a4, -8
   	subw	a1, a1, a4
  -	srli	a4, a3, 31
  +	srliw	a4, a3, 31
   	add	a4, a4, a3
   	andi	a4, a4, -2
   	subw	a3, a3, a4
  @@ -254,36 +254,44 @@ uq3333:                                 # @uq3333
   	.type	ur3333, at function
   ur3333:                                 # @ur3333
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI9_0)
  -	ld	a3, %lo(.LCPI9_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	srli	a7, a4, 1
  -	andi	a4, a4, -2
  -	addw	a4, a4, a7
  -	subw	a7, a2, a4
  -	mulhu	a4, a1, a3
  -	srli	a2, a4, 1
  -	andi	a4, a4, -2
  -	addw	a2, a2, a4
  -	subw	a1, a1, a2
  -	mulhu	a2, a5, a3
  -	srli	a4, a2, 1
  -	andi	a2, a2, -2
  -	addw	a2, a2, a4
  -	subw	a2, a5, a2
  -	mulhu	a3, a6, a3
  +	lw	t0, 12(a1)
  +	lw	t1, 8(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 4(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 0(a1)
  +	lui	a2, %hi(.LCPI9_0)
  +	ld	a2, %lo(.LCPI9_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 1
   	andi	a3, a3, -2
   	addw	a3, a3, a4
  -	subw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a2, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a7, 0(a0)
  +	subw	a1, a1, a3
  +	mulhu	a3, t2, a2
  +	srli	a4, a3, 1
  +	andi	a3, a3, -2
  +	addw	a3, a3, a4
  +	subw	a3, a5, a3
  +	mulhu	a4, a7, a2
  +	srli	a5, a4, 1
  +	andi	a4, a4, -2
  +	addw	a4, a4, a5
  +	subw	a4, t1, a4
  +	mulhu	a2, a6, a2
  +	srli	a5, a2, 1
  +	andi	a2, a2, -2
  +	addw	a2, a2, a5
  +	subw	a2, t0, a2
  +	sw	a2, 12(a0)
  +	sw	a4, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end9:
   	.size	ur3333, .Lfunc_end9-ur3333
  @@ -420,36 +428,44 @@ uq6565:                                 # @uq6565
   	.type	ur6565, at function
   ur6565:                                 # @ur6565
   # %bb.0:                                # %entry
  -	lwu	a2, 4(a1)
  -	lui	a3, %hi(.LCPI13_0)
  -	ld	a3, %lo(.LCPI13_0)(a3)
  -	lwu	a6, 8(a1)
  -	lwu	a7, 0(a1)
  -	lwu	a1, 12(a1)
  -	mulhu	a4, a2, a3
  -	srli	a5, a4, 2
  -	andi	a4, a4, -4
  -	addw	a4, a4, a5
  -	subw	a2, a2, a4
  -	mulhu	a3, a1, a3
  +	lw	t0, 8(a1)
  +	lw	t1, 0(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 12(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 4(a1)
  +	lui	a2, %hi(.LCPI13_0)
  +	ld	a2, %lo(.LCPI13_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 2
  -	lui	a5, %hi(.LCPI13_1)
  -	ld	a5, %lo(.LCPI13_1)(a5)
   	andi	a3, a3, -4
   	addw	a3, a3, a4
   	subw	a1, a1, a3
  -	mulhu	a3, a7, a5
  +	mulhu	a2, t2, a2
  +	srli	a3, a2, 2
  +	lui	a4, %hi(.LCPI13_1)
  +	ld	a4, %lo(.LCPI13_1)(a4)
  +	andi	a2, a2, -4
  +	addw	a2, a2, a3
  +	subw	a2, a5, a2
  +	mulhu	a3, a7, a4
   	srli	a3, a3, 2
  -	li	a4, 6
  -	mulw	a3, a3, a4
  -	subw	a3, a7, a3
  -	mulhu	a5, a6, a5
  -	srli	a5, a5, 2
  -	mulw	a4, a5, a4
  -	subw	a4, a6, a4
  -	sw	a1, 12(a0)
  +	li	a5, 6
  +	mulw	a3, a3, a5
  +	subw	a3, t1, a3
  +	mulhu	a4, a6, a4
  +	srli	a4, a4, 2
  +	mulw	a4, a4, a5
  +	subw	a4, t0, a4
  +	sw	a2, 12(a0)
   	sw	a4, 8(a0)
  -	sw	a2, 4(a0)
  +	sw	a1, 4(a0)
   	sw	a3, 0(a0)
   	ret
   .Lfunc_end13:
  @@ -592,48 +608,50 @@ uq1414146:                              # @uq1414146
   	.section	.sdata,"aw", at progbits
   	.p2align	3                               # -- Begin function ur1414146
   .LCPI17_0:
  -	.quad	5270498306774157605             # 0x4924924924924925
  -.LCPI17_1:
   	.quad	-6148914691236517205            # 0xaaaaaaaaaaaaaaab
  +.LCPI17_1:
  +	.quad	5270498306774157605             # 0x4924924924924925
   	.text
   	.globl	ur1414146
   	.p2align	1
   	.type	ur1414146, at function
   ur1414146:                              # @ur1414146
   # %bb.0:                                # %entry
  -	lwu	a6, 12(a1)
  -	lwu	a3, 0(a1)
  -	lui	a4, %hi(.LCPI17_0)
  -	ld	a4, %lo(.LCPI17_0)(a4)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	srli	a2, a3, 1
  -	mulhu	a2, a2, a4
  -	srli	a2, a2, 1
  -	li	a7, 14
  +	lw	a6, 8(a1)
  +	lw	a3, 4(a1)
  +	lw	a4, 12(a1)
  +	lui	a5, %hi(.LCPI17_0)
  +	ld	a5, %lo(.LCPI17_0)(a5)
  +	lw	a1, 0(a1)
  +	slli	a2, a4, 32
  +	srli	a2, a2, 32
  +	mulhu	a2, a2, a5
  +	srli	a2, a2, 2
  +	li	a7, 6
  +	lui	a5, %hi(.LCPI17_1)
  +	ld	a5, %lo(.LCPI17_1)(a5)
   	mulw	a2, a2, a7
  -	subw	a2, a3, a2
  -	srli	a3, a1, 1
  -	mulhu	a3, a3, a4
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a1, a1, a3
  -	srli	a3, a5, 1
  -	mulhu	a3, a3, a4
  -	lui	a4, %hi(.LCPI17_1)
  -	ld	a4, %lo(.LCPI17_1)(a4)
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a3, a5, a3
  -	mulhu	a4, a6, a4
  -	srli	a4, a4, 2
  -	li	a5, 6
  -	mulw	a4, a4, a5
  -	subw	a4, a6, a4
  -	sw	a4, 12(a0)
  -	sw	a3, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	subw	a7, a4, a2
  +	srliw	a4, a1, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	li	a2, 14
  +	mulw	a4, a4, a2
  +	subw	a1, a1, a4
  +	srliw	a4, a3, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a4, a4, a2
  +	subw	a3, a3, a4
  +	srliw	a4, a6, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a2, a4, a2
  +	subw	a2, a6, a2
  +	sw	a2, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
  +	sw	a7, 12(a0)
   	ret
   .Lfunc_end17:
   	.size	ur1414146, .Lfunc_end17-ur1414146
  @@ -788,48 +806,56 @@ uq7777:                                 # @uq7777
   	.type	ur7777, at function
   ur7777:                                 # @ur7777
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI21_0)
  -	ld	a3, %lo(.LCPI21_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a7, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	sub	a5, a2, a4
  -	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a2, a2, a4
  -	mulhu	a4, a1, a3
  -	sub	a5, a1, a4
  +	lw	a6, 12(a1)
  +	lw	a7, 8(a1)
  +	slli	a4, a6, 32
  +	lw	t2, 4(a1)
  +	srli	t0, a4, 32
  +	slli	a2, a7, 32
  +	srli	t1, a2, 32
  +	slli	a3, t2, 32
  +	lw	a1, 0(a1)
  +	lui	a4, %hi(.LCPI21_0)
  +	ld	a4, %lo(.LCPI21_0)(a4)
  +	srli	a3, a3, 32
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	mulhu	a5, a2, a4
  +	sub	a2, a2, a5
  +	srli	a2, a2, 1
  +	add	a2, a2, a5
  +	srli	a2, a2, 2
  +	slliw	a5, a2, 3
  +	subw	a2, a2, a5
  +	addw	a1, a1, a2
  +	mulhu	a2, a3, a4
  +	sub	a3, a3, a2
  +	srli	a3, a3, 1
  +	add	a2, a2, a3
  +	srli	a2, a2, 2
  +	slliw	a3, a2, 3
  +	subw	a2, a2, a3
  +	addw	a2, t2, a2
  +	mulhu	a3, t1, a4
  +	sub	a5, t1, a3
   	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a1, a1, a4
  -	mulhu	a4, a7, a3
  -	sub	a5, a7, a4
  +	add	a3, a3, a5
  +	srli	a3, a3, 2
  +	slliw	a5, a3, 3
  +	subw	a3, a3, a5
  +	addw	a3, a7, a3
  +	mulhu	a4, t0, a4
  +	sub	a5, t0, a4
   	srli	a5, a5, 1
   	add	a4, a4, a5
   	srli	a4, a4, 2
   	slliw	a5, a4, 3
   	subw	a4, a4, a5
  -	addw	a4, a7, a4
  -	mulhu	a3, a6, a3
  -	sub	a5, a6, a3
  -	srli	a5, a5, 1
  -	add	a3, a3, a5
  -	srli	a3, a3, 2
  -	slliw	a5, a3, 3
  -	subw	a3, a3, a5
  -	addw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a4, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	addw	a4, a6, a4
  +	sw	a4, 12(a0)
  +	sw	a3, 8(a0)
  +	sw	a2, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end21:
   	.size	ur7777, .Lfunc_end21-ur7777
  @@ -931,43 +957,37 @@ sr7777:                                 # @sr7777
   	.type	main, at function
   main:                                   # @main
   # %bb.0:                                # %entry
  -	addi	sp, sp, -144
  -	sd	ra, 136(sp)                     # 8-byte Folded Spill
  -	sd	s0, 128(sp)                     # 8-byte Folded Spill
  -	sd	s1, 120(sp)                     # 8-byte Folded Spill
  -	sd	s2, 112(sp)                     # 8-byte Folded Spill
  -	sd	s3, 104(sp)                     # 8-byte Folded Spill
  -	sd	s4, 96(sp)                      # 8-byte Folded Spill
  -	sd	s5, 88(sp)                      # 8-byte Folded Spill
  -	sd	s6, 80(sp)                      # 8-byte Folded Spill
  -	sd	s7, 72(sp)                      # 8-byte Folded Spill
  -	sd	s8, 64(sp)                      # 8-byte Folded Spill
  -	sd	s9, 56(sp)                      # 8-byte Folded Spill
  -	sd	s10, 48(sp)                     # 8-byte Folded Spill
  -	sd	s11, 40(sp)                     # 8-byte Folded Spill
  +	addi	sp, sp, -128
  +	sd	ra, 120(sp)                     # 8-byte Folded Spill
  +	sd	s0, 112(sp)                     # 8-byte Folded Spill
  +	sd	s1, 104(sp)                     # 8-byte Folded Spill
  +	sd	s2, 96(sp)                      # 8-byte Folded Spill
  +	sd	s3, 88(sp)                      # 8-byte Folded Spill
  +	sd	s4, 80(sp)                      # 8-byte Folded Spill
  +	sd	s5, 72(sp)                      # 8-byte Folded Spill
  +	sd	s6, 64(sp)                      # 8-byte Folded Spill
  +	sd	s7, 56(sp)                      # 8-byte Folded Spill
  +	sd	s8, 48(sp)                      # 8-byte Folded Spill
  +	sd	s9, 40(sp)                      # 8-byte Folded Spill
   	li	a0, 0
   	li	s3, 1
   	lui	a1, %hi(u)
   	addi	s2, a1, %lo(u)
  -	addi	s1, sp, 16
  -	lui	a1, 171
  -	addiw	a1, a1, -1365
  -	slli	a1, a1, 12
  -	addi	s4, a1, -1365
  +	addi	s4, sp, 16
   	lui	a1, 699051
   	addiw	a1, a1, -1365
  -	slli	s5, a1, 32
  +	slli	s1, a1, 32
   	lui	a1, 838861
   	addiw	a1, a1, -819
  -	slli	s6, a1, 32
  -	li	s7, 6
  +	slli	s5, a1, 32
  +	li	s6, 6
   	lui	a1, 299593
   	slli	a1, a1, 1
  -	addi	s8, a1, 1171
  -	li	s9, 14
  +	addi	s7, a1, 1171
  +	li	s8, 14
   	lui	a1, 149797
  -	addiw	s10, a1, -1755
  -	slli	s11, s10, 32
  +	addiw	a1, a1, -1755
  +	slli	s9, a1, 32
   .LBB24_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
   	slli	a0, a0, 4
  @@ -975,9 +995,9 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.2:                                # %lor.lhs.false
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -989,9 +1009,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.4:                                # %lor.lhs.false19
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1006,7 +1026,7 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1020,7 +1040,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1050,9 +1070,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  +	srliw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
   # %bb.12:                               # %lor.lhs.false90
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1079,7 +1099,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1096,9 +1116,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.18:                               # %lor.lhs.false145
  @@ -1106,16 +1127,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.19:                               # %if.end154
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.20:                               # %lor.lhs.false162
  @@ -1123,7 +1145,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.21:                               # %if.end171
  @@ -1133,9 +1155,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1146,7 +1169,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1156,9 +1179,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1169,7 +1193,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1182,9 +1206,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.26:                               # %lor.lhs.false217
  @@ -1192,16 +1217,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.27:                               # %if.end226
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.28:                               # %lor.lhs.false234
  @@ -1209,7 +1235,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.29:                               # %if.end243
  @@ -1219,11 +1245,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.30:                               # %lor.lhs.false253
  @@ -1231,7 +1258,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1241,11 +1268,12 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.32:                               # %lor.lhs.false270
  @@ -1253,7 +1281,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1266,10 +1294,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.34:                               # %lor.lhs.false289
  @@ -1277,17 +1305,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.35:                               # %if.end298
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.36:                               # %lor.lhs.false306
  @@ -1295,7 +1323,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a0, a0, 1
  -	mul	a0, a0, s8
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.37:                               # %if.end315
  @@ -1305,12 +1333,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.38:                               # %lor.lhs.false325
  @@ -1318,21 +1346,21 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.39:                               # %if.end334
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.40:                               # %lor.lhs.false342
  @@ -1340,9 +1368,9 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a2, a0, 1
  -	mul	a2, a2, s8
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.41:                               # %if.end351
  @@ -1352,9 +1380,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1366,7 +1395,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1377,9 +1406,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1391,7 +1421,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1405,9 +1435,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1422,7 +1453,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1436,9 +1467,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1453,7 +1485,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1505,8 +1537,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1525,8 +1557,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1549,8 +1581,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1571,8 +1603,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1591,8 +1623,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 29
  +	slli	a2, a0, 1
  +	srli	a2, a2, 61
   	addw	a0, a0, a2
   	sraiw	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1600,9 +1632,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	addw	a0, a0, a2
   	sraiw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1610,8 +1642,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1638,9 +1670,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	add	a2, a2, a0
   	andi	a2, a2, -2
   	subw	a0, a0, a2
  @@ -1649,8 +1681,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -2079,20 +2111,18 @@ main:                                   # @main
   	bnez	a1, .LBB24_51
   # %bb.100:                              # %for.end863
   	li	a0, 0
  -	ld	ra, 136(sp)                     # 8-byte Folded Reload
  -	ld	s0, 128(sp)                     # 8-byte Folded Reload
  -	ld	s1, 120(sp)                     # 8-byte Folded Reload
  -	ld	s2, 112(sp)                     # 8-byte Folded Reload
  -	ld	s3, 104(sp)                     # 8-byte Folded Reload
  -	ld	s4, 96(sp)                      # 8-byte Folded Reload
  -	ld	s5, 88(sp)                      # 8-byte Folded Reload
  -	ld	s6, 80(sp)                      # 8-byte Folded Reload
  -	ld	s7, 72(sp)                      # 8-byte Folded Reload
  -	ld	s8, 64(sp)                      # 8-byte Folded Reload
  -	ld	s9, 56(sp)                      # 8-byte Folded Reload
  -	ld	s10, 48(sp)                     # 8-byte Folded Reload
  -	ld	s11, 40(sp)                     # 8-byte Folded Reload
  -	addi	sp, sp, 144
  +	ld	ra, 120(sp)                     # 8-byte Folded Reload
  +	ld	s0, 112(sp)                     # 8-byte Folded Reload
  +	ld	s1, 104(sp)                     # 8-byte Folded Reload
  +	ld	s2, 96(sp)                      # 8-byte Folded Reload
  +	ld	s3, 88(sp)                      # 8-byte Folded Reload
  +	ld	s4, 80(sp)                      # 8-byte Folded Reload
  +	ld	s5, 72(sp)                      # 8-byte Folded Reload
  +	ld	s6, 64(sp)                      # 8-byte Folded Reload
  +	ld	s7, 56(sp)                      # 8-byte Folded Reload
  +	ld	s8, 48(sp)                      # 8-byte Folded Reload
  +	ld	s9, 40(sp)                      # 8-byte Folded Reload
  +	addi	sp, sp, 128
   	ret
   .LBB24_101:                             # %if.then
   	call	abort
  diff --git a/output_rv64imafdc_lp64d_Os/20140622-1.s b/output_rv64imafdc_lp64d_Os/20140622-1.s
  index e33cce6bdf..6d20c13a92 100644
  --- a/output_rv64imafdc_lp64d_Os/20140622-1.s
  +++ b/output_rv64imafdc_lp64d_Os/20140622-1.s
  @@ -8,10 +8,12 @@
   test:                                   # @test
   # %bb.0:                                # %entry
   	lui	a1, %hi(p)
  -	lwu	a1, %lo(p)(a1)
  +	lw	a1, %lo(p)(a1)
   	addw	a0, a0, a1
   	slli	a0, a0, 32
   	srli	a0, a0, 32
  +	slli	a1, a1, 32
  +	srli	a1, a1, 32
   	sub	a0, a0, a1
   	ret
   .Lfunc_end0:
  diff --git a/output_rv64imafdc_lp64d_Os/pr22061-1.s b/output_rv64imafdc_lp64d_Os/pr22061-1.s
  index 141bfd37a9..277b8f7983 100644
  --- a/output_rv64imafdc_lp64d_Os/pr22061-1.s
  +++ b/output_rv64imafdc_lp64d_Os/pr22061-1.s
  @@ -17,8 +17,10 @@ foo:                                    # @foo
   bar:                                    # @bar
   # %bb.0:                                # %entry
   	lui	a1, %hi(N)
  -	lwu	a1, %lo(N)(a1)
  -	add	a0, a0, a1
  +	lw	a1, %lo(N)(a1)
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	add	a0, a0, a2
   	sb	a1, 0(a0)
   	ret
   .Lfunc_end1:
  diff --git a/output_rv64imafdc_lp64d_Os/pr51581-2.s b/output_rv64imafdc_lp64d_Os/pr51581-2.s
  index 7ce56aa11e..40ee3b4359 100644
  --- a/output_rv64imafdc_lp64d_Os/pr51581-2.s
  +++ b/output_rv64imafdc_lp64d_Os/pr51581-2.s
  @@ -44,14 +44,14 @@ f2:                                     # @f2
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB1_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -110,11 +110,13 @@ f4:                                     # @f4
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, 18
   .LBB3_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	subw	a4, a5, a4
  @@ -170,15 +172,15 @@ f6:                                     # @f6
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, 19
   .LBB5_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -210,11 +212,10 @@ f7:                                     # @f7
   	addiw	a6, a3, 1366
   .LBB6_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	sext.w	a5, a4
  -	mul	a5, a5, a6
  +	lw	a4, 0(a1)
  +	mul	a5, a4, a6
   	srli	a5, a5, 32
  -	srli	a3, a4, 31
  +	srliw	a3, a4, 31
   	addw	a3, a3, a5
   	slliw	a5, a3, 1
   	addw	a3, a3, a5
  @@ -239,14 +240,14 @@ f8:                                     # @f8
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 171
  +	lui	a3, 699051
   	addiw	a3, a3, -1365
  -	slli	a3, a3, 12
  -	addi	a6, a3, -1365
  +	slli	a6, a3, 32
   .LBB7_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a4, 0(a1)
  -	mul	a5, a4, a6
  +	lw	a4, 0(a1)
  +	slli	a5, a4, 32
  +	mulhu	a5, a5, a6
   	srli	a5, a5, 33
   	slliw	a3, a5, 1
   	addw	a3, a3, a5
  @@ -276,11 +277,10 @@ f9:                                     # @f9
   	li	a6, -18
   .LBB8_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 34
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -306,11 +306,13 @@ f10:                                    # @f10
   	lui	a2, 1
   	lui	a3, 233017
   	addiw	a3, a3, -455
  +	slli	a3, a3, 32
   	li	a6, -18
   .LBB9_1:                                # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a3
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a3
   	srli	a4, a4, 34
   	mulw	a4, a4, a6
   	addw	a4, a4, a5
  @@ -339,11 +341,10 @@ f11:                                    # @f11
   	li	a6, -19
   .LBB10_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	sext.w	a4, a5
  -	mul	a4, a4, a7
  +	lw	a5, 0(a1)
  +	mul	a4, a5, a7
   	srai	a4, a4, 35
  -	srli	a3, a5, 31
  +	srliw	a3, a5, 31
   	addw	a3, a3, a4
   	mulw	a3, a3, a6
   	addw	a3, a3, a5
  @@ -367,15 +368,15 @@ f12:                                    # @f12
   	lui	a1, %hi(b)
   	addi	a1, a1, %lo(b)
   	lui	a2, 1
  -	lui	a3, 175
  -	addiw	a3, a3, 647
  -	slli	a3, a3, 12
  -	addi	a7, a3, -1077
  +	lui	a3, 717447
  +	addiw	a3, a3, -1077
  +	slli	a7, a3, 32
   	li	a6, -19
   .LBB11_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
  -	lwu	a5, 0(a1)
  -	mul	a4, a5, a7
  +	lw	a5, 0(a1)
  +	slli	a4, a5, 32
  +	mulhu	a4, a4, a7
   	srli	a4, a4, 32
   	subw	a3, a5, a4
   	srliw	a3, a3, 1
  @@ -444,10 +445,9 @@ main:                                   # @main
   	lui	a2, 1
   	lui	a3, 349525
   	addiw	a6, a3, 1366
  -	lui	a4, 171
  +	lui	a4, 699051
   	addiw	a4, a4, -1365
  -	slli	a4, a4, 12
  -	addi	a7, a4, -1365
  +	slli	a7, a4, 32
   .LBB12_3:                               # %for.body5
                                           # =>This Inner Loop Header: Depth=1
   	lw	a5, 0(s0)
  @@ -462,9 +462,10 @@ main:                                   # @main
   	bne	t0, a3, .LBB12_27
   # %bb.4:                                # %lor.lhs.false
                                           #   in Loop: Header=BB12_3 Depth=1
  -	lwu	a3, 0(s1)
  +	lw	a3, 0(s1)
   	lw	t0, 0(a0)
  -	mul	a5, a3, a7
  +	slli	a5, a3, 32
  +	mulhu	a5, a5, a7
   	srli	a5, a5, 33
   	slliw	a4, a5, 1
   	addw	a4, a4, a5
  @@ -491,24 +492,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_7:                               # %for.body22
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.8:                                # %lor.lhs.false29
                                           #   in Loop: Header=BB12_7 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -536,10 +539,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_11:                              # %for.body43
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -553,9 +555,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.12:                               # %lor.lhs.false50
                                           #   in Loop: Header=BB12_11 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  @@ -586,10 +589,9 @@ main:                                   # @main
   	lui	a4, 1
   	lui	a5, 349525
   	addiw	a6, a5, 1366
  -	lui	s1, 171
  +	lui	s1, 699051
   	addiw	s1, s1, -1365
  -	slli	s1, s1, 12
  -	addi	a7, s1, -1365
  +	slli	a7, s1, 32
   .LBB12_15:                              # %for.body64
                                           # =>This Inner Loop Header: Depth=1
   	lw	s0, 0(a2)
  @@ -604,9 +606,10 @@ main:                                   # @main
   	bne	t0, a5, .LBB12_27
   # %bb.16:                               # %lor.lhs.false71
                                           #   in Loop: Header=BB12_15 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t0, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 33
   	slliw	s1, s0, 1
   	addw	s1, s1, s0
  @@ -633,24 +636,26 @@ main:                                   # @main
   	addi	a3, a3, %lo(c)
   	lui	a4, 1
   	lui	a5, 233017
  -	addiw	a7, a5, -455
  +	addiw	t0, a5, -455
   	li	a6, 18
  +	slli	a7, t0, 32
   .LBB12_19:                              # %for.body85
                                           # =>This Inner Loop Header: Depth=1
  -	lw	s0, 0(a2)
  -	lw	t0, 0(a3)
  -	mul	a5, s0, a7
  -	srli	s1, a5, 63
  +	lw	s1, 0(a2)
  +	lw	t1, 0(a3)
  +	mul	a5, s1, t0
  +	srli	s0, a5, 63
   	srai	a5, a5, 34
  -	addw	a5, a5, s1
  +	addw	a5, a5, s0
   	mulw	a5, a5, a6
  -	subw	a5, s0, a5
  -	bne	t0, a5, .LBB12_27
  +	subw	a5, s1, a5
  +	bne	t1, a5, .LBB12_27
   # %bb.20:                               # %lor.lhs.false92
                                           #   in Loop: Header=BB12_19 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	s1, 0(a1)
  -	mul	s0, a5, a7
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, a7
   	srli	s0, s0, 34
   	mulw	s0, s0, a6
   	subw	a5, a5, s0
  @@ -678,10 +683,9 @@ main:                                   # @main
   	lui	a5, 441506
   	addiw	a7, a5, -1293
   	li	a6, 19
  -	lui	s0, 175
  -	addiw	s0, s0, 647
  -	slli	s0, s0, 12
  -	addi	t0, s0, -1077
  +	lui	s0, 717447
  +	addiw	s0, s0, -1077
  +	slli	t0, s0, 32
   .LBB12_23:                              # %for.body106
                                           # =>This Inner Loop Header: Depth=1
   	lw	s1, 0(a2)
  @@ -695,9 +699,10 @@ main:                                   # @main
   	bne	t1, a5, .LBB12_27
   # %bb.24:                               # %lor.lhs.false113
                                           #   in Loop: Header=BB12_23 Depth=1
  -	lwu	a5, 0(a0)
  +	lw	a5, 0(a0)
   	lw	t1, 0(a1)
  -	mul	s0, a5, t0
  +	slli	s0, a5, 32
  +	mulhu	s0, s0, t0
   	srli	s0, s0, 32
   	subw	s1, a5, s0
   	srliw	s1, s1, 1
  diff --git a/output_rv64imafdc_lp64d_Os/pr53645.s b/output_rv64imafdc_lp64d_Os/pr53645.s
  index 56bd435ece..7c352a0b5d 100644
  --- a/output_rv64imafdc_lp64d_Os/pr53645.s
  +++ b/output_rv64imafdc_lp64d_Os/pr53645.s
  @@ -188,7 +188,7 @@ sq1428:                                 # @sq1428
   sr1428:                                 # @sr1428
   # %bb.0:                                # %entry
   	lw	a2, 4(a1)
  -	lwu	a3, 8(a1)
  +	lw	a3, 8(a1)
   	lw	a1, 12(a1)
   	slli	a4, a2, 1
   	srli	a4, a4, 62
  @@ -200,7 +200,7 @@ sr1428:                                 # @sr1428
   	add	a4, a4, a1
   	andi	a4, a4, -8
   	subw	a1, a1, a4
  -	srli	a4, a3, 31
  +	srliw	a4, a3, 31
   	add	a4, a4, a3
   	andi	a4, a4, -2
   	subw	a3, a3, a4
  @@ -254,36 +254,44 @@ uq3333:                                 # @uq3333
   	.type	ur3333, at function
   ur3333:                                 # @ur3333
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI9_0)
  -	ld	a3, %lo(.LCPI9_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	srli	a7, a4, 1
  -	andi	a4, a4, -2
  -	addw	a4, a4, a7
  -	subw	a7, a2, a4
  -	mulhu	a4, a1, a3
  -	srli	a2, a4, 1
  -	andi	a4, a4, -2
  -	addw	a2, a2, a4
  -	subw	a1, a1, a2
  -	mulhu	a2, a5, a3
  -	srli	a4, a2, 1
  -	andi	a2, a2, -2
  -	addw	a2, a2, a4
  -	subw	a2, a5, a2
  -	mulhu	a3, a6, a3
  +	lw	t0, 12(a1)
  +	lw	t1, 8(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 4(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 0(a1)
  +	lui	a2, %hi(.LCPI9_0)
  +	ld	a2, %lo(.LCPI9_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 1
   	andi	a3, a3, -2
   	addw	a3, a3, a4
  -	subw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a2, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a7, 0(a0)
  +	subw	a1, a1, a3
  +	mulhu	a3, t2, a2
  +	srli	a4, a3, 1
  +	andi	a3, a3, -2
  +	addw	a3, a3, a4
  +	subw	a3, a5, a3
  +	mulhu	a4, a7, a2
  +	srli	a5, a4, 1
  +	andi	a4, a4, -2
  +	addw	a4, a4, a5
  +	subw	a4, t1, a4
  +	mulhu	a2, a6, a2
  +	srli	a5, a2, 1
  +	andi	a2, a2, -2
  +	addw	a2, a2, a5
  +	subw	a2, t0, a2
  +	sw	a2, 12(a0)
  +	sw	a4, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end9:
   	.size	ur3333, .Lfunc_end9-ur3333
  @@ -420,36 +428,44 @@ uq6565:                                 # @uq6565
   	.type	ur6565, at function
   ur6565:                                 # @ur6565
   # %bb.0:                                # %entry
  -	lwu	a2, 4(a1)
  -	lui	a3, %hi(.LCPI13_0)
  -	ld	a3, %lo(.LCPI13_0)(a3)
  -	lwu	a6, 8(a1)
  -	lwu	a7, 0(a1)
  -	lwu	a1, 12(a1)
  -	mulhu	a4, a2, a3
  -	srli	a5, a4, 2
  -	andi	a4, a4, -4
  -	addw	a4, a4, a5
  -	subw	a2, a2, a4
  -	mulhu	a3, a1, a3
  +	lw	t0, 8(a1)
  +	lw	t1, 0(a1)
  +	slli	a4, t0, 32
  +	lw	a5, 12(a1)
  +	srli	a6, a4, 32
  +	slli	a4, t1, 32
  +	srli	a7, a4, 32
  +	slli	a4, a5, 32
  +	lw	a1, 4(a1)
  +	lui	a2, %hi(.LCPI13_0)
  +	ld	a2, %lo(.LCPI13_0)(a2)
  +	srli	t2, a4, 32
  +	slli	a3, a1, 32
  +	srli	a3, a3, 32
  +	mulhu	a3, a3, a2
   	srli	a4, a3, 2
  -	lui	a5, %hi(.LCPI13_1)
  -	ld	a5, %lo(.LCPI13_1)(a5)
   	andi	a3, a3, -4
   	addw	a3, a3, a4
   	subw	a1, a1, a3
  -	mulhu	a3, a7, a5
  +	mulhu	a2, t2, a2
  +	srli	a3, a2, 2
  +	lui	a4, %hi(.LCPI13_1)
  +	ld	a4, %lo(.LCPI13_1)(a4)
  +	andi	a2, a2, -4
  +	addw	a2, a2, a3
  +	subw	a2, a5, a2
  +	mulhu	a3, a7, a4
   	srli	a3, a3, 2
  -	li	a4, 6
  -	mulw	a3, a3, a4
  -	subw	a3, a7, a3
  -	mulhu	a5, a6, a5
  -	srli	a5, a5, 2
  -	mulw	a4, a5, a4
  -	subw	a4, a6, a4
  -	sw	a1, 12(a0)
  +	li	a5, 6
  +	mulw	a3, a3, a5
  +	subw	a3, t1, a3
  +	mulhu	a4, a6, a4
  +	srli	a4, a4, 2
  +	mulw	a4, a4, a5
  +	subw	a4, t0, a4
  +	sw	a2, 12(a0)
   	sw	a4, 8(a0)
  -	sw	a2, 4(a0)
  +	sw	a1, 4(a0)
   	sw	a3, 0(a0)
   	ret
   .Lfunc_end13:
  @@ -592,48 +608,50 @@ uq1414146:                              # @uq1414146
   	.section	.sdata,"aw", at progbits
   	.p2align	3                               # -- Begin function ur1414146
   .LCPI17_0:
  -	.quad	5270498306774157605             # 0x4924924924924925
  -.LCPI17_1:
   	.quad	-6148914691236517205            # 0xaaaaaaaaaaaaaaab
  +.LCPI17_1:
  +	.quad	5270498306774157605             # 0x4924924924924925
   	.text
   	.globl	ur1414146
   	.p2align	1
   	.type	ur1414146, at function
   ur1414146:                              # @ur1414146
   # %bb.0:                                # %entry
  -	lwu	a6, 12(a1)
  -	lwu	a3, 0(a1)
  -	lui	a4, %hi(.LCPI17_0)
  -	ld	a4, %lo(.LCPI17_0)(a4)
  -	lwu	a5, 8(a1)
  -	lwu	a1, 4(a1)
  -	srli	a2, a3, 1
  -	mulhu	a2, a2, a4
  -	srli	a2, a2, 1
  -	li	a7, 14
  +	lw	a6, 8(a1)
  +	lw	a3, 4(a1)
  +	lw	a4, 12(a1)
  +	lui	a5, %hi(.LCPI17_0)
  +	ld	a5, %lo(.LCPI17_0)(a5)
  +	lw	a1, 0(a1)
  +	slli	a2, a4, 32
  +	srli	a2, a2, 32
  +	mulhu	a2, a2, a5
  +	srli	a2, a2, 2
  +	li	a7, 6
  +	lui	a5, %hi(.LCPI17_1)
  +	ld	a5, %lo(.LCPI17_1)(a5)
   	mulw	a2, a2, a7
  -	subw	a2, a3, a2
  -	srli	a3, a1, 1
  -	mulhu	a3, a3, a4
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a1, a1, a3
  -	srli	a3, a5, 1
  -	mulhu	a3, a3, a4
  -	lui	a4, %hi(.LCPI17_1)
  -	ld	a4, %lo(.LCPI17_1)(a4)
  -	srli	a3, a3, 1
  -	mulw	a3, a3, a7
  -	subw	a3, a5, a3
  -	mulhu	a4, a6, a4
  -	srli	a4, a4, 2
  -	li	a5, 6
  -	mulw	a4, a4, a5
  -	subw	a4, a6, a4
  -	sw	a4, 12(a0)
  -	sw	a3, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	subw	a7, a4, a2
  +	srliw	a4, a1, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	li	a2, 14
  +	mulw	a4, a4, a2
  +	subw	a1, a1, a4
  +	srliw	a4, a3, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a4, a4, a2
  +	subw	a3, a3, a4
  +	srliw	a4, a6, 1
  +	mulhu	a4, a4, a5
  +	srli	a4, a4, 1
  +	mulw	a2, a4, a2
  +	subw	a2, a6, a2
  +	sw	a2, 8(a0)
  +	sw	a3, 4(a0)
  +	sw	a1, 0(a0)
  +	sw	a7, 12(a0)
   	ret
   .Lfunc_end17:
   	.size	ur1414146, .Lfunc_end17-ur1414146
  @@ -788,48 +806,56 @@ uq7777:                                 # @uq7777
   	.type	ur7777, at function
   ur7777:                                 # @ur7777
   # %bb.0:                                # %entry
  -	lwu	a2, 0(a1)
  -	lui	a3, %hi(.LCPI21_0)
  -	ld	a3, %lo(.LCPI21_0)(a3)
  -	lwu	a6, 12(a1)
  -	lwu	a7, 8(a1)
  -	lwu	a1, 4(a1)
  -	mulhu	a4, a2, a3
  -	sub	a5, a2, a4
  -	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a2, a2, a4
  -	mulhu	a4, a1, a3
  -	sub	a5, a1, a4
  +	lw	a6, 12(a1)
  +	lw	a7, 8(a1)
  +	slli	a4, a6, 32
  +	lw	t2, 4(a1)
  +	srli	t0, a4, 32
  +	slli	a2, a7, 32
  +	srli	t1, a2, 32
  +	slli	a3, t2, 32
  +	lw	a1, 0(a1)
  +	lui	a4, %hi(.LCPI21_0)
  +	ld	a4, %lo(.LCPI21_0)(a4)
  +	srli	a3, a3, 32
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	mulhu	a5, a2, a4
  +	sub	a2, a2, a5
  +	srli	a2, a2, 1
  +	add	a2, a2, a5
  +	srli	a2, a2, 2
  +	slliw	a5, a2, 3
  +	subw	a2, a2, a5
  +	addw	a1, a1, a2
  +	mulhu	a2, a3, a4
  +	sub	a3, a3, a2
  +	srli	a3, a3, 1
  +	add	a2, a2, a3
  +	srli	a2, a2, 2
  +	slliw	a3, a2, 3
  +	subw	a2, a2, a3
  +	addw	a2, t2, a2
  +	mulhu	a3, t1, a4
  +	sub	a5, t1, a3
   	srli	a5, a5, 1
  -	add	a4, a4, a5
  -	srli	a4, a4, 2
  -	slliw	a5, a4, 3
  -	subw	a4, a4, a5
  -	addw	a1, a1, a4
  -	mulhu	a4, a7, a3
  -	sub	a5, a7, a4
  +	add	a3, a3, a5
  +	srli	a3, a3, 2
  +	slliw	a5, a3, 3
  +	subw	a3, a3, a5
  +	addw	a3, a7, a3
  +	mulhu	a4, t0, a4
  +	sub	a5, t0, a4
   	srli	a5, a5, 1
   	add	a4, a4, a5
   	srli	a4, a4, 2
   	slliw	a5, a4, 3
   	subw	a4, a4, a5
  -	addw	a4, a7, a4
  -	mulhu	a3, a6, a3
  -	sub	a5, a6, a3
  -	srli	a5, a5, 1
  -	add	a3, a3, a5
  -	srli	a3, a3, 2
  -	slliw	a5, a3, 3
  -	subw	a3, a3, a5
  -	addw	a3, a6, a3
  -	sw	a3, 12(a0)
  -	sw	a4, 8(a0)
  -	sw	a1, 4(a0)
  -	sw	a2, 0(a0)
  +	addw	a4, a6, a4
  +	sw	a4, 12(a0)
  +	sw	a3, 8(a0)
  +	sw	a2, 4(a0)
  +	sw	a1, 0(a0)
   	ret
   .Lfunc_end21:
   	.size	ur7777, .Lfunc_end21-ur7777
  @@ -931,43 +957,37 @@ sr7777:                                 # @sr7777
   	.type	main, at function
   main:                                   # @main
   # %bb.0:                                # %entry
  -	addi	sp, sp, -144
  -	sd	ra, 136(sp)                     # 8-byte Folded Spill
  -	sd	s0, 128(sp)                     # 8-byte Folded Spill
  -	sd	s1, 120(sp)                     # 8-byte Folded Spill
  -	sd	s2, 112(sp)                     # 8-byte Folded Spill
  -	sd	s3, 104(sp)                     # 8-byte Folded Spill
  -	sd	s4, 96(sp)                      # 8-byte Folded Spill
  -	sd	s5, 88(sp)                      # 8-byte Folded Spill
  -	sd	s6, 80(sp)                      # 8-byte Folded Spill
  -	sd	s7, 72(sp)                      # 8-byte Folded Spill
  -	sd	s8, 64(sp)                      # 8-byte Folded Spill
  -	sd	s9, 56(sp)                      # 8-byte Folded Spill
  -	sd	s10, 48(sp)                     # 8-byte Folded Spill
  -	sd	s11, 40(sp)                     # 8-byte Folded Spill
  +	addi	sp, sp, -128
  +	sd	ra, 120(sp)                     # 8-byte Folded Spill
  +	sd	s0, 112(sp)                     # 8-byte Folded Spill
  +	sd	s1, 104(sp)                     # 8-byte Folded Spill
  +	sd	s2, 96(sp)                      # 8-byte Folded Spill
  +	sd	s3, 88(sp)                      # 8-byte Folded Spill
  +	sd	s4, 80(sp)                      # 8-byte Folded Spill
  +	sd	s5, 72(sp)                      # 8-byte Folded Spill
  +	sd	s6, 64(sp)                      # 8-byte Folded Spill
  +	sd	s7, 56(sp)                      # 8-byte Folded Spill
  +	sd	s8, 48(sp)                      # 8-byte Folded Spill
  +	sd	s9, 40(sp)                      # 8-byte Folded Spill
   	li	a0, 0
   	li	s3, 1
   	lui	a1, %hi(u)
   	addi	s2, a1, %lo(u)
  -	addi	s1, sp, 16
  -	lui	a1, 171
  -	addiw	a1, a1, -1365
  -	slli	a1, a1, 12
  -	addi	s4, a1, -1365
  +	addi	s4, sp, 16
   	lui	a1, 699051
   	addiw	a1, a1, -1365
  -	slli	s5, a1, 32
  +	slli	s1, a1, 32
   	lui	a1, 838861
   	addiw	a1, a1, -819
  -	slli	s6, a1, 32
  -	li	s7, 6
  +	slli	s5, a1, 32
  +	li	s6, 6
   	lui	a1, 299593
   	slli	a1, a1, 1
  -	addi	s8, a1, 1171
  -	li	s9, 14
  +	addi	s7, a1, 1171
  +	li	s8, 14
   	lui	a1, 149797
  -	addiw	s10, a1, -1755
  -	slli	s11, s10, 32
  +	addiw	a1, a1, -1755
  +	slli	s9, a1, 32
   .LBB24_1:                               # %for.body
                                           # =>This Inner Loop Header: Depth=1
   	slli	a0, a0, 4
  @@ -975,9 +995,9 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.2:                                # %lor.lhs.false
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -989,9 +1009,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 2
  +	srliw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
   # %bb.4:                                # %lor.lhs.false19
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1006,7 +1026,7 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur4444
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1020,7 +1040,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1050,9 +1070,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  +	srliw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
   # %bb.12:                               # %lor.lhs.false90
                                           #   in Loop: Header=BB24_1 Depth=1
  @@ -1079,7 +1099,7 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
   	andi	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1096,9 +1116,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.18:                               # %lor.lhs.false145
  @@ -1106,16 +1127,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.19:                               # %if.end154
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.20:                               # %lor.lhs.false162
  @@ -1123,7 +1145,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 33
   	bne	a1, a0, .LBB24_101
   # %bb.21:                               # %if.end171
  @@ -1133,9 +1155,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur3333
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1146,7 +1169,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1156,9 +1179,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1169,7 +1193,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 33
   	slliw	a3, a2, 1
   	addw	a2, a2, a3
  @@ -1182,9 +1206,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.26:                               # %lor.lhs.false217
  @@ -1192,16 +1217,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.27:                               # %if.end226
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a0, a0, s4
  +	slli	a0, a0, 32
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.28:                               # %lor.lhs.false234
  @@ -1209,7 +1235,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s6
  +	mulhu	a0, a0, s5
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.29:                               # %if.end243
  @@ -1219,11 +1245,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur6565
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.30:                               # %lor.lhs.false253
  @@ -1231,7 +1258,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1241,11 +1268,12 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s4
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.32:                               # %lor.lhs.false270
  @@ -1253,7 +1281,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s6
  +	mulhu	a2, a2, s5
   	srli	a2, a2, 34
   	slliw	a3, a2, 2
   	addw	a2, a2, a3
  @@ -1266,10 +1294,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.34:                               # %lor.lhs.false289
  @@ -1277,17 +1305,17 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a0, a0, 32
  -	mulhu	a0, a0, s5
  +	mulhu	a0, a0, s1
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.35:                               # %if.end298
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a0, a0, 1
  -	mul	a0, a0, s8
  +	srliw	a0, a0, 1
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.36:                               # %lor.lhs.false306
  @@ -1295,7 +1323,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a0, a0, 1
  -	mul	a0, a0, s8
  +	mul	a0, a0, s7
   	srli	a0, a0, 34
   	bne	a1, a0, .LBB24_101
   # %bb.37:                               # %if.end315
  @@ -1305,12 +1333,12 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur1414146
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.38:                               # %lor.lhs.false325
  @@ -1318,21 +1346,21 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s5
  +	mulhu	a2, a2, s1
   	srli	a2, a2, 34
  -	mulw	a2, a2, s7
  +	mulw	a2, a2, s6
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.39:                               # %if.end334
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	srli	a2, a0, 1
  -	mul	a2, a2, s8
  +	srliw	a2, a0, 1
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.40:                               # %lor.lhs.false342
  @@ -1340,9 +1368,9 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	srliw	a2, a0, 1
  -	mul	a2, a2, s8
  +	mul	a2, a2, s7
   	srli	a2, a2, 34
  -	mulw	a2, a2, s9
  +	mulw	a2, a2, s8
   	subw	a0, a0, a2
   	bne	a1, a0, .LBB24_101
   # %bb.41:                               # %if.end351
  @@ -1352,9 +1380,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	uq7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1366,7 +1395,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1377,9 +1406,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1391,7 +1421,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a0, a0, a2
   	srliw	a0, a0, 1
  @@ -1405,9 +1435,10 @@ main:                                   # @main
   	addi	a0, sp, 16
   	mv	a1, s0
   	call	ur7777
  -	lwu	a0, 0(s0)
  +	lw	a0, 0(s0)
   	lw	a1, 16(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1422,7 +1453,7 @@ main:                                   # @main
   	lw	a0, 12(s0)
   	lw	a1, 28(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1436,9 +1467,10 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_1 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 24(sp)
  -	mul	a2, a0, s10
  +	slli	a2, a0, 32
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1453,7 +1485,7 @@ main:                                   # @main
   	lw	a0, 4(s0)
   	lw	a1, 20(sp)
   	slli	a2, a0, 32
  -	mulhu	a2, a2, s11
  +	mulhu	a2, a2, s9
   	srli	a2, a2, 32
   	subw	a3, a0, a2
   	srliw	a3, a3, 1
  @@ -1505,8 +1537,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1525,8 +1557,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1549,8 +1581,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1571,8 +1603,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -1591,8 +1623,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 12(s0)
   	lw	a1, 12(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 29
  +	slli	a2, a0, 1
  +	srli	a2, a2, 61
   	addw	a0, a0, a2
   	sraiw	a0, a0, 3
   	bne	a1, a0, .LBB24_101
  @@ -1600,9 +1632,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	addw	a0, a0, a2
   	sraiw	a0, a0, 1
   	bne	a1, a0, .LBB24_101
  @@ -1610,8 +1642,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	addw	a0, a0, a2
   	sraiw	a0, a0, 2
   	bne	a1, a0, .LBB24_101
  @@ -1638,9 +1670,9 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	#APP
   	#NO_APP
  -	lwu	a0, 8(s0)
  +	lw	a0, 8(s0)
   	lw	a1, 8(sp)
  -	srli	a2, a0, 31
  +	srliw	a2, a0, 31
   	add	a2, a2, a0
   	andi	a2, a2, -2
   	subw	a0, a0, a2
  @@ -1649,8 +1681,8 @@ main:                                   # @main
                                           #   in Loop: Header=BB24_51 Depth=1
   	lw	a0, 4(s0)
   	lw	a1, 4(sp)
  -	sraiw	a2, a0, 31
  -	srliw	a2, a2, 30
  +	slli	a2, a0, 1
  +	srli	a2, a2, 62
   	add	a2, a2, a0
   	andi	a2, a2, -4
   	subw	a0, a0, a2
  @@ -2079,20 +2111,18 @@ main:                                   # @main
   	bnez	a1, .LBB24_51
   # %bb.100:                              # %for.end863
   	li	a0, 0
  -	ld	ra, 136(sp)                     # 8-byte Folded Reload
  -	ld	s0, 128(sp)                     # 8-byte Folded Reload
  -	ld	s1, 120(sp)                     # 8-byte Folded Reload
  -	ld	s2, 112(sp)                     # 8-byte Folded Reload
  -	ld	s3, 104(sp)                     # 8-byte Folded Reload
  -	ld	s4, 96(sp)                      # 8-byte Folded Reload
  -	ld	s5, 88(sp)                      # 8-byte Folded Reload
  -	ld	s6, 80(sp)                      # 8-byte Folded Reload
  -	ld	s7, 72(sp)                      # 8-byte Folded Reload
  -	ld	s8, 64(sp)                      # 8-byte Folded Reload
  -	ld	s9, 56(sp)                      # 8-byte Folded Reload
  -	ld	s10, 48(sp)                     # 8-byte Folded Reload
  -	ld	s11, 40(sp)                     # 8-byte Folded Reload
  -	addi	sp, sp, 144
  +	ld	ra, 120(sp)                     # 8-byte Folded Reload
  +	ld	s0, 112(sp)                     # 8-byte Folded Reload
  +	ld	s1, 104(sp)                     # 8-byte Folded Reload
  +	ld	s2, 96(sp)                      # 8-byte Folded Reload
  +	ld	s3, 88(sp)                      # 8-byte Folded Reload
  +	ld	s4, 80(sp)                      # 8-byte Folded Reload
  +	ld	s5, 72(sp)                      # 8-byte Folded Reload
  +	ld	s6, 64(sp)                      # 8-byte Folded Reload
  +	ld	s7, 56(sp)                      # 8-byte Folded Reload
  +	ld	s8, 48(sp)                      # 8-byte Folded Reload
  +	ld	s9, 40(sp)                      # 8-byte Folded Reload
  +	addi	sp, sp, 128
   	ret
   .LBB24_101:                             # %if.then
   	call	abort
  diff --git a/output_rv64imafdc_lp64d_Oz/20140622-1.s b/output_rv64imafdc_lp64d_Oz/20140622-1.s
  index e33cce6bdf..6d20c13a92 100644
  --- a/output_rv64imafdc_lp64d_Oz/20140622-1.s
  +++ b/output_rv64imafdc_lp64d_Oz/20140622-1.s
  @@ -8,10 +8,12 @@
   test:                                   # @test
   # %bb.0:                                # %entry
   	lui	a1, %hi(p)
  -	lwu	a1, %lo(p)(a1)
  +	lw	a1, %lo(p)(a1)
   	addw	a0, a0, a1
   	slli	a0, a0, 32
   	srli	a0, a0, 32
  +	slli	a1, a1, 32
  +	srli	a1, a1, 32
   	sub	a0, a0, a1
   	ret
   .Lfunc_end0:
  diff --git a/output_rv64imafdc_lp64d_Oz/pr22061-1.s b/output_rv64imafdc_lp64d_Oz/pr22061-1.s
  index 141bfd37a9..277b8f7983 100644
  --- a/output_rv64imafdc_lp64d_Oz/pr22061-1.s
  +++ b/output_rv64imafdc_lp64d_Oz/pr22061-1.s
  @@ -17,8 +17,10 @@ foo:                                    # @foo
   bar:                                    # @bar
   # %bb.0:                                # %entry
   	lui	a1, %hi(N)
  -	lwu	a1, %lo(N)(a1)
  -	add	a0, a0, a1
  +	lw	a1, %lo(N)(a1)
  +	slli	a2, a1, 32
  +	srli	a2, a2, 32
  +	add	a0, a0, a2
   	sb	a1, 0(a0)
   	ret
   .Lfunc_end1:


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D130397/new/

https://reviews.llvm.org/D130397



More information about the llvm-commits mailing list