History

Add support for load/store of _Bool value

Add support for loading _Bool value in i386, x86_64 and arm as well as support for storing _Bool value on arm.

Thomas Preud'homme committed 13 years ago

Commit f6b50551 parent 807dc7c3 files · +4 −4Browse files

Unified · Split

3 files
  1. arm-gen.c +2 −2
  2. i386-gen.c +1 −1
  3. x86_64-gen.c +1 −1
arm-gen.c+2−2
@@ -571,7 +571,7 @@ void load(int r, SValue *sv) · 570 unmodified lines
571 op=0xE5100000;571 op=0xE5100000;
572 if(!sign)572 if(!sign)
573 op|=0x800000;573 op|=0x800000;
574 if ((ft & VT_BTYPE) == VT_BYTE)574 if ((ft & VT_BTYPE) == VT_BYTE || (ft & VT_BTYPE) == VT_BOOL)
575 op|=0x400000;575 op|=0x400000;
576 o(op|(intr(r)<<12)|fc|(base<<16));576 o(op|(intr(r)<<12)|fc|(base<<16));
577 }577 }
@@ -699,7 +699,7 @@ void store(int r, SValue *sv) · 121 unmodified lines
699 op=0xE5000000;699 op=0xE5000000;
700 if(!sign)700 if(!sign)
701 op|=0x800000;701 op|=0x800000;
702 if ((ft & VT_BTYPE) == VT_BYTE)702 if ((ft & VT_BTYPE) == VT_BYTE || (ft & VT_BTYPE) == VT_BOOL)
703 op|=0x400000;703 op|=0x400000;
704 o(op|(intr(r)<<12)|fc|(base<<16));704 o(op|(intr(r)<<12)|fc|(base<<16));
705 }705 }
i386-gen.c+1−1
@@ -244,7 +244,7 @@ ST_FUNC void load(int r, SValue *sv) · 243 unmodified lines
244 } else if ((ft & VT_BTYPE) == VT_LDOUBLE) {244 } else if ((ft & VT_BTYPE) == VT_LDOUBLE) {
245 o(0xdb); /* fldt */245 o(0xdb); /* fldt */
246 r = 5;246 r = 5;
247 } else if ((ft & VT_TYPE) == VT_BYTE) {247 } else if ((ft & VT_TYPE) == VT_BYTE || (ft & VT_TYPE) == VT_BOOL) {
248 o(0xbe0f); /* movsbl */248 o(0xbe0f); /* movsbl */
249 } else if ((ft & VT_TYPE) == (VT_BYTE | VT_UNSIGNED)) {249 } else if ((ft & VT_TYPE) == (VT_BYTE | VT_UNSIGNED)) {
250 o(0xb60f); /* movzbl */250 o(0xb60f); /* movzbl */
x86_64-gen.c+1−1
@@ -414,7 +414,7 @@ void load(int r, SValue *sv) · 413 unmodified lines
414 r = REG_VALUE(r);414 r = REG_VALUE(r);
415 } else if ((ft & VT_BTYPE) == VT_LDOUBLE) {415 } else if ((ft & VT_BTYPE) == VT_LDOUBLE) {
416 b = 0xdb, r = 5; /* fldt */416 b = 0xdb, r = 5; /* fldt */
417 } else if ((ft & VT_TYPE) == VT_BYTE) {417 } else if ((ft & VT_TYPE) == VT_BYTE || (ft & VT_TYPE) == VT_BOOL) {
418 b = 0xbe0f; /* movsbl */418 b = 0xbe0f; /* movsbl */
419 } else if ((ft & VT_TYPE) == (VT_BYTE | VT_UNSIGNED)) {419 } else if ((ft & VT_TYPE) == (VT_BYTE | VT_UNSIGNED)) {
420 b = 0xb60f; /* movzbl */420 b = 0xb60f; /* movzbl */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t