Skip to content

几类循环模式的指令集角度观察(2) #33

@meton-robean

Description

@meton-robean

往期 #31 几类循环模式的指令集角度观察

simple sgemm

这个例子来自论文XLOOP 提供的benchmark

void sgemm_scalar_int( int C[], int A[], int B[], int size )
{

  for ( int mm = 0; mm < size; ++mm  ) {
    for ( int nn = 0; nn < size; ++nn ) {
      int c = 0;
      for ( int i = 0; i < size; ++i ) {
        int a = A[mm + i * size];
        int b = B[nn + i * size];
        c += a * b;
      }
      C[mm+nn*size] = c;
    }
  }

}

000000008000110a <sgemm_scalar_int>:
    8000110a:	06d05363          	blez	a3,80001170 <sgemm_scalar_int+0x66>
    8000110e:	1141                	addi	sp,sp,-16
    80001110:	e422                	sd	s0,8(sp)
    80001112:	82aa                	mv	t0,a0
    80001114:	8336                	mv	t1,a3
    80001116:	8432                	mv	s0,a2
    80001118:	8fae                	mv	t6,a1
    8000111a:	00269513          	slli	a0,a3,0x2
    8000111e:	4381                	li	t2,0
    80001120:	8f22                	mv	t5,s0
    80001122:	8e96                	mv	t4,t0
    80001124:	4e01                	li	t3,0
    80001126:	867a                	mv	a2,t5
    80001128:	86fe                	mv	a3,t6
    8000112a:	4781                	li	a5,0
    8000112c:	4581                	li	a1,0

  **最内层循环的汇编代码------------------------------------
    **8000112e:	4298                lw	a4,0(a3)
    80001130:	00062803          	lw	a6,0(a2)
    80001134:	88be                mv	a7,a5
    80001136:	2785                addiw	a5,a5,1
    80001138:	0307073b          	mulw	a4,a4,a6
    8000113c:	96aa                add	a3,a3,a0
    8000113e:	962a                add	a2,a2,a0
    80001140:	9db9                addw	a1,a1,a4
    80001142:	fef316e3          	bne	t1,a5,8000112e <sgemm_scalar_int+0x24>

** 最内层循环的汇编代码--end----------------------------------

    80001146:	00bea023          	sw	a1,0(t4)
    8000114a:	001e079b          	addiw	a5,t3,1
    8000114e:	9eaa                	add	t4,t4,a0
    80001150:	0f11                	addi	t5,t5,4
    80001152:	011e0463          	beq	t3,a7,8000115a <sgemm_scalar_int+0x50>
    80001156:	8e3e                	mv	t3,a5
    80001158:	b7f9                	j	80001126 <sgemm_scalar_int+0x1c>
    8000115a:	0013879b          	addiw	a5,t2,1


    8000115e:	0f91                	addi	t6,t6,4
    80001160:	0291                	addi	t0,t0,4
    80001162:	01c38463          	beq	t2,t3,8000116a <sgemm_scalar_int+0x60>
    80001166:	83be                	mv	t2,a5
    80001168:	bf65                	j	80001120 <sgemm_scalar_int+0x16>
    8000116a:	6422                	ld	s0,8(sp)


    8000116c:	0141                	addi	sp,sp,16
    8000116e:	8082                	ret
    80001170:	8082                	ret

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions