- "mtspr 9, 3", # move r3 to CTR
- "addi 0,0,0", # initialise r0 to zero
- # chr-copy loop starts here:
- # for (i = 0; i < n && src[i] != '\0'; i++)
- # dest[i] = src[i];
- "setvl 1,0,%d,0,1,1" % maxvl, # VL (and r1) = MIN(CTR,MAXVL=4)
- "sv.lbzu/pi *16, 1(10)", # load VL bytes (update r10 addr)
- "sv.cmpi/ff=eq/vli *0,1,*16,0", # compare against zero, truncate VL
- "sv.stbu/pi *16, 1(12)", # store VL bytes (update r12 addr)
- "sv.bc/all 0, *2, -0x1c", # test CTR, stop if cmpi failed
- # zeroing loop starts here:
- # for ( ; i < n; i++)
- # dest[i] = '\0';
- "setvl 1,0,%d,0,1,1" % maxvl, # VL (and r1) = MIN(CTR,MAXVL=4)
- "sv.stbu/pi 0, 1(12)", # store VL zeros (update r12 addr)
- "sv.bc 16, *0, -0xc", # decrement CTR by VL, stop at zero
+ "mtspr 9, 3", # move r3 to CTR
+ "addi 0,0,0", # initialise r0 to zero
+ # chr-copy loop starts here:
+ # for (i = 0; i < n && src[i] != '\0'; i++)
+ # dest[i] = src[i];
+ # VL (and r1) = MIN(CTR,MAXVL=4)
+ "setvl 1,0,%d,0,1,1" % maxvl,
+ # load VL bytes (update r10 addr)
+ "sv.lbzu/pi *16, 1(10)",
+ "sv.cmpi/ff=eq/vli *0,1,*16,0", # compare against zero, truncate VL
+ # store VL bytes (update r12 addr)
+ "sv.stbu/pi *16, 1(12)",
+ "sv.bc/all 0, *2, -0x1c", # test CTR, stop if cmpi failed
+ # zeroing loop starts here:
+ # for ( ; i < n; i++)
+ # dest[i] = '\0';
+ # VL (and r1) = MIN(CTR,MAXVL=4)
+ "setvl 1,0,%d,0,1,1" % maxvl,
+ # store VL zeros (update r12 addr)
+ "sv.stbu/pi 0, 1(12)",
+ "sv.bc 16, *0, -0xc", # decrement CTR by VL, stop at zero