1; RUN: llc --mtriple=loongarch32 < %s | FileCheck %s --check-prefix=LA32 2; RUN: llc --mtriple=loongarch64 < %s | FileCheck %s --check-prefix=LA64 3 4define void @fence_acquire() nounwind { 5; LA32-LABEL: fence_acquire: 6; LA32: # %bb.0: 7; LA32-NEXT: dbar 0 8; LA32-NEXT: jirl $zero, $ra, 0 9; 10; LA64-LABEL: fence_acquire: 11; LA64: # %bb.0: 12; LA64-NEXT: dbar 0 13; LA64-NEXT: jirl $zero, $ra, 0 14 fence acquire 15 ret void 16} 17 18define void @fence_release() nounwind { 19; LA32-LABEL: fence_release: 20; LA32: # %bb.0: 21; LA32-NEXT: dbar 0 22; LA32-NEXT: jirl $zero, $ra, 0 23; 24; LA64-LABEL: fence_release: 25; LA64: # %bb.0: 26; LA64-NEXT: dbar 0 27; LA64-NEXT: jirl $zero, $ra, 0 28 fence release 29 ret void 30} 31 32define void @fence_acq_rel() nounwind { 33; LA32-LABEL: fence_acq_rel: 34; LA32: # %bb.0: 35; LA32-NEXT: dbar 0 36; LA32-NEXT: jirl $zero, $ra, 0 37; 38; LA64-LABEL: fence_acq_rel: 39; LA64: # %bb.0: 40; LA64-NEXT: dbar 0 41; LA64-NEXT: jirl $zero, $ra, 0 42 fence acq_rel 43 ret void 44} 45 46define void @fence_seq_cst() nounwind { 47; LA32-LABEL: fence_seq_cst: 48; LA32: # %bb.0: 49; LA32-NEXT: dbar 0 50; LA32-NEXT: jirl $zero, $ra, 0 51; 52; LA64-LABEL: fence_seq_cst: 53; LA64: # %bb.0: 54; LA64-NEXT: dbar 0 55; LA64-NEXT: jirl $zero, $ra, 0 56 fence seq_cst 57 ret void 58} 59