| |
| |
| |
|
|
| #include "textflag.h" |
| |
| // Minimax polynomial coefficients and other constants |
| DATA 路asinrodataL15<> + 0/8, $-1.309611320495605469 |
| DATA 路asinrodataL15<> + 8/8, $0x3ff921fb54442d18 |
| DATA 路asinrodataL15<> + 16/8, $0xbff921fb54442d18 |
| DATA 路asinrodataL15<> + 24/8, $1.309611320495605469 |
| DATA 路asinrodataL15<> + 32/8, $-0.0 |
| DATA 路asinrodataL15<> + 40/8, $1.199437040755305217 |
| DATA 路asinrodataL15<> + 48/8, $0.166666666666651626E+00 |
| DATA 路asinrodataL15<> + 56/8, $0.750000000042621169E-01 |
| DATA 路asinrodataL15<> + 64/8, $0.446428567178116477E-01 |
| DATA 路asinrodataL15<> + 72/8, $0.303819660378071894E-01 |
| DATA 路asinrodataL15<> + 80/8, $0.223715011892010405E-01 |
| DATA 路asinrodataL15<> + 88/8, $0.173659424522364952E-01 |
| DATA 路asinrodataL15<> + 96/8, $0.137810186504372266E-01 |
| DATA 路asinrodataL15<> + 104/8, $0.134066870961173521E-01 |
| DATA 路asinrodataL15<> + 112/8, $-.412335502831898721E-02 |
| DATA 路asinrodataL15<> + 120/8, $0.867383739532082719E-01 |
| DATA 路asinrodataL15<> + 128/8, $-.328765950607171649E+00 |
| DATA 路asinrodataL15<> + 136/8, $0.110401073869414626E+01 |
| DATA 路asinrodataL15<> + 144/8, $-.270694366992537307E+01 |
| DATA 路asinrodataL15<> + 152/8, $0.500196500770928669E+01 |
| DATA 路asinrodataL15<> + 160/8, $-.665866959108585165E+01 |
| DATA 路asinrodataL15<> + 168/8, $-.344895269334086578E+01 |
| DATA 路asinrodataL15<> + 176/8, $0.927437952918301659E+00 |
| DATA 路asinrodataL15<> + 184/8, $0.610487478874645653E+01 |
| DATA 路asinrodataL15<> + 192/8, $0x7ff8000000000000 |
| DATA 路asinrodataL15<> + 200/8, $-1.0 |
| DATA 路asinrodataL15<> + 208/8, $1.0 |
| DATA 路asinrodataL15<> + 216/8, $1.00000000000000000e-20 |
| GLOBL 路asinrodataL15<> + 0, RODATA, $224 |
|
|
| |
| |
| |
| |
| |
| |
| |
|
|
| TEXT 路asinAsm(SB), NOSPLIT, $0-16 |
| FMOVD x+0, F0 |
| MOVD $路asinrodataL15<>+0, R9 |
| LGDR F0, R7 |
| FMOVD F0, F8 |
| SRAD $32, R7 |
| WORD $0xC0193FE6 |
| BYTE $0xA0 |
| BYTE $0x9D |
| WORD $0xB91700C7 |
| MOVW R12, R8 |
| MOVW R1, R6 |
| CMPBGT R8, R6, L2 |
| WORD $0xC0193BFF |
| BYTE $0xFF |
| BYTE $0xFF |
| MOVW R1, R6 |
| CMPBGT R8, R6, L13 |
| L3: |
| FMOVD 216, F0 |
| FMADD F0, F8, F8 |
| L1: |
| FMOVD F8, ret+8 |
| RET |
| L2: |
| WORD $0xC0193FEF |
| BYTE $0xFF |
| BYTE $0xFF |
| CMPW R12, R1 |
| BLE L14 |
| L5: |
| WORD $0xED0090D0 |
| BYTE $0x00 |
| BYTE $0x19 |
| BEQ L9 |
| WORD $0xED0090C8 |
| BYTE $0x00 |
| BYTE $0x19 |
| BEQ L10 |
| WFCEDBS V8, V8, V0 |
| BVS L1 |
| FMOVD 192, F8 |
| BR L1 |
| L13: |
| WFMDB V0, V0, V10 |
| L4: |
| WFMDB V10, V10, V0 |
| FMOVD 184, F6 |
| FMOVD 176, F2 |
| FMOVD 168, F4 |
| WFMADB V0, V2, V6, V2 |
| FMOVD 160, F6 |
| WFMADB V0, V4, V6, V4 |
| FMOVD 152, F6 |
| WFMADB V0, V2, V6, V2 |
| FMOVD 144, F6 |
| WFMADB V0, V4, V6, V4 |
| FMOVD 136, F6 |
| WFMADB V0, V2, V6, V2 |
| WORD $0xC0193FE6 |
| BYTE $0xA0 |
| BYTE $0x9D |
| FMOVD 128, F6 |
| WFMADB V0, V4, V6, V4 |
| FMOVD 120, F6 |
| WFMADB V0, V2, V6, V2 |
| FMOVD 112, F6 |
| WFMADB V0, V4, V6, V4 |
| FMOVD 104, F6 |
| WFMADB V0, V2, V6, V2 |
| FMOVD 96, F6 |
| WFMADB V0, V4, V6, V4 |
| FMOVD 88, F6 |
| WFMADB V0, V2, V6, V2 |
| FMOVD 80, F6 |
| WFMADB V0, V4, V6, V4 |
| FMOVD 72, F6 |
| WFMADB V0, V2, V6, V2 |
| FMOVD 64, F6 |
| WFMADB V0, V4, V6, V4 |
| FMOVD 56, F6 |
| WFMADB V0, V2, V6, V2 |
| FMOVD 48, F6 |
| WFMADB V0, V4, V6, V0 |
| WFMDB V8, V10, V4 |
| FMADD F2, F10, F0 |
| FMADD F0, F4, F8 |
| CMPW R12, R1 |
| BLE L1 |
| FMOVD 40, F0 |
| FMADD F0, F1, F8 |
| FMOVD F8, ret+8 |
| RET |
| L14: |
| FMOVD 200, F0 |
| FMADD F8, F8, F0 |
| LCDBR F0, F10 |
| WORD $0xED009020 |
| BYTE $0x00 |
| BYTE $0x19 |
| FSQRT F10, F8 |
| L6: |
| MOVW R7, R6 |
| CMPBLE R6, $0, L8 |
| LCDBR F8, F8 |
| FMOVD 24, F1 |
| BR L4 |
| L10: |
| FMOVD 16, F8 |
| BR L1 |
| L9: |
| FMOVD 8, F8 |
| FMOVD F8, ret+8 |
| RET |
| L8: |
| FMOVD 0, F1 |
| BR L4 |
|
|