1 #include <stdio.h> 2 3 int main(void) 4 { 5 int a; 6 float b, c; 7 int result; 8 9 a = 0; 10 b = 1234.2; 11 c = 12.4; 12 result = 0x1; 13 __asm 14 ("lfles:\n\t" 15 "l.addi %0, %0, 0x1\n\t" 16 "lf.sfle.s %1, %2\n\t" 17 "l.bf lfles\n\t" 18 "l.nop\n\t" 19 : "+r"(a) 20 : "r"(b), "r"(c) 21 ); 22 if (a != result) { 23 printf("lf.sfle.s error\n"); 24 return -1; 25 } 26 27 b = 1.1; 28 c = 19.4; 29 result = 0x3; 30 __asm 31 ("l.addi %0, %0, 0x1\n\t" 32 "l.addi %0, %0, 0x1\n\t" 33 "lf.sfle.s %1, %2\n\t" 34 "l.bf 1f\n\t" 35 "l.nop\n\t" 36 "l.addi %0, %0, 0x1\n\t" 37 "l.addi %0, %0, 0x1\n\t" 38 "1:\n\t" 39 : "+r"(a) 40 : "r"(b), "r"(c) 41 ); 42 if (a != result) { 43 printf("lf.sfle.s error\n"); 44 return -1; 45 } 46 47 /* int a; 48 double b, c; 49 int result; 50 51 a = 0; 52 b = 1212.5; 53 c = 123.5; 54 result = 0x1; 55 __asm 56 ("lfled:\n\t" 57 "l.addi %0, %0, 0x1\n\t" 58 "lf.sfle.d %1, %2\n\t" 59 "l.bf lfled\n\t" 60 "l.nop\n\t" 61 : "+r"(a) 62 : "r"(b), "r"(c) 63 ); 64 if (a != result) { 65 printf("lf.sfle.d error\n"); 66 return -1; 67 } 68 69 b = 13.5; 70 c = 113.5; 71 result = 0x2; 72 __asm 73 ("l.addi %0, %0, 0x1\n\t" 74 "lf.sfle.d %1, %2\n\t" 75 "l.bf 1f\n\t" 76 "l.nop\n\t" 77 "l.addi %0, %0, 0x1\n\t" 78 "1:\n\t" 79 : "+r"(a) 80 : "r"(b), "r"(c) 81 ); 82 if (a != result) { 83 printf("lf.sfle.d error\n"); 84 return -1; 85 }*/ 86 87 return 0; 88 } 89