Skip to content

Instantly share code, notes, and snippets.

@playXE
Created April 21, 2020 17:36
Show Gist options
  • Save playXE/062a51b5b6b4094cb9b0826d4bc70cc3 to your computer and use it in GitHub Desktop.
Save playXE/062a51b5b6b4094cb9b0826d4bc70cc3 to your computer and use it in GitHub Desktop.
func swap(x: *i32,y: *i32) void {
if x == y {
return;
}
*x = *x ^ *y;
*y = *y ^ *x;
*x = *x ^ *y;
return;
}
// GIMPLE produced by GCCJIT, can be JITed or AOT compiled
swapptri32ptri32 (signed int * x, signed int * y)
{
signed int * y;
signed int * x;
entry:
x = x;
y = y;
[vm/main.jazz:5:10] if (x == y) goto if_true:L0; else goto if_false:L1;
if_true:L0:
return;
if_false:L1:
[vm/main.jazz:8:13] _1 = [vm/main.jazz:8:13] *x;
[vm/main.jazz:8:15] _2 = [vm/main.jazz:8:15] *y;
[vm/main.jazz:8:13] _3 = _1 ^ _2;
[vm/main.jazz:8:5] *x = _3;
[vm/main.jazz:9:13] _4 = [vm/main.jazz:9:13] *y;
[vm/main.jazz:9:15] _5 = [vm/main.jazz:9:15] *x;
[vm/main.jazz:9:13] _6 = _4 ^ _5;
[vm/main.jazz:9:5] *y = _6;
[vm/main.jazz:10:13] _7 = [vm/main.jazz:10:13] *x;
[vm/main.jazz:10:15] _8 = [vm/main.jazz:10:15] *y;
[vm/main.jazz:10:13] _9 = _7 ^ _8;
[vm/main.jazz:10:5] *x = _9;
return;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment