Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <altivec.h>
- printf("%st:", s);
- for (i = 0 ; i <= 15; i++)
- printf("%3d ", vec_extract(_data, i));
- printf("n");
- }
- void print_vec_long(char *s, vector signed long int _data){
- int i;
- printf("%st:", s);
- for (i = 0 ; i <= 1; i++)
- printf("%ld ", vec_extract(_data, i));
- printf("n");
- }
- int main(){
- vector signed long int output;
- signed char x, y;
- vector signed char _data;
- const vector signed char bits = {120, 112, 104, 96, 88, 80, 72, 64, 56, 48, 40, 32, 24, 16, 8, 0};
- // Initialize the vector _data with the same values
- _data = vec_splat_s8(-1);
- print_vec_char("_data", _data);
- print_vec_char("bits", bits);
- output = vec_vbpermq(_data, bits);
- print_vec_long("output", output);
- y = vec_extract(output, 0);
- x = vec_extract(output, 1);
- printf("First Half = %xn", y);
- printf("Second Half = %xn", x);
- }
- # objdump -D test | grep print_vec_long -A 10
- 0000000000000924 <print_vec_long>:
- 924: 02 00 4c 3c addis r2,r12,2
- 928: dc 75 42 38 addi r2,r2,30172
- 92c: a6 02 08 7c mflr r0
- 930: 10 00 01 f8 std r0,16(r1)
- 934: f8 ff e1 fb std r31,-8(r1)
- 938: 61 ff 21 f8 stdu r1,-160(r1)
- 93c: 78 0b 3f 7c mr r31,r1
- 940: 78 00 7f f8 std r3,120(r31)
- 944: 56 12 02 f0 xxswapd vs0,vs34
- 948: d0 ff 20 39 li r9,-48
- objdump -D test | grep print_vec_long -A 10
- 0000000000000924 <print_vec_long>:
- 924: 02 00 4c 3c addis r2,r12,2
- 928: dc 75 42 38 addi r2,r2,30172
- 92c: a6 02 08 7c mflr r0
- 930: 10 00 01 f8 std r0,16(r1)
- 934: f8 ff e1 fb std r31,-8(r1)
- 938: 61 ff 21 f8 stdu r1,-160(r1)
- 93c: 78 0b 3f 7c mr r31,r1
- 940: 78 00 7f f8 std r3,120(r31)
- 944: 56 12 02 f0 xxswapd vs0,vs34
- 948: d0 ff 20 39 li r9,-48
Add Comment
Please, Sign In to add comment